<?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>172055</bug_id>
          
          <creation_ts>2017-05-12 15:18:17 -0700</creation_ts>
          <short_desc>Drop remaining uses of PassRefPtr in WebKit2/WebProcess</short_desc>
          <delta_ts>2017-05-12 18:55:20 -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>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308101</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 15:18:17 -0700</bug_when>
    <thetext>Drop remaining uses of PassRefPtr in WebKit2/WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308114</commentid>
    <comment_count>1</comment_count>
      <attachid>309958</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 15:47:52 -0700</bug_when>
    <thetext>Created attachment 309958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308118</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 15:50:51 -0700</bug_when>
    <thetext>Attachment 309958 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:56:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308128</commentid>
    <comment_count>3</comment_count>
      <attachid>309961</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 16:01:21 -0700</bug_when>
    <thetext>Created attachment 309961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308129</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 16:04:06 -0700</bug_when>
    <thetext>Attachment 309961 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:56:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308132</commentid>
    <comment_count>5</comment_count>
      <attachid>309963</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 16:07:38 -0700</bug_when>
    <thetext>Created attachment 309963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308133</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 16:09:03 -0700</bug_when>
    <thetext>Attachment 309963 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:56:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308148</commentid>
    <comment_count>7</comment_count>
      <attachid>309966</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 16:32:40 -0700</bug_when>
    <thetext>Created attachment 309966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308149</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 16:34:58 -0700</bug_when>
    <thetext>Attachment 309966 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:56:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308152</commentid>
    <comment_count>9</comment_count>
      <attachid>309967</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 16:41:43 -0700</bug_when>
    <thetext>Created attachment 309967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308154</commentid>
    <comment_count>10</comment_count>
      <attachid>309968</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 16:44:11 -0700</bug_when>
    <thetext>Created attachment 309968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308157</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 16:45:48 -0700</bug_when>
    <thetext>Attachment 309968 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:56:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308167</commentid>
    <comment_count>12</comment_count>
      <attachid>309972</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 17:10:29 -0700</bug_when>
    <thetext>Created attachment 309972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308168</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 17:12:00 -0700</bug_when>
    <thetext>Attachment 309972 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.h:56:  &apos;renderedImage&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedSnapshotOptions&apos;.  [readability/naming/protected] [4]
Total errors found: 1 in 44 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308224</commentid>
    <comment_count>14</comment_count>
      <attachid>309972</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 18:55:18 -0700</bug_when>
    <thetext>Comment on attachment 309972
Patch

Clearing flags on attachment: 309972

Committed r216810: &lt;http://trac.webkit.org/changeset/216810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308225</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 18:55:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309958</attachid>
            <date>2017-05-12 15:47:52 -0700</date>
            <delta_ts>2017-05-12 16:01:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512154751.patch</filename>
            <type>text/plain</type>
            <size>51397</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggMWFlYzBiOTIyZWUzZWVkOWI0YTIx
ZGQ3NTYyNmE2Zjg1OGM0NjE1Zi4uOGNjNjI4YWMxNzYzZmE1Njk1ZDc0MTA1YzNlNDhlOThlODc4
NGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTQyLDcgKzQyLDcgQEAgKyAoV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKil3b3JsZAogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKW5vcm1hbFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoKkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA5NGFiNGRhNzU4YTBmMzA1ZTZmYzg0YmY2
YjljMjQ2NjQ0MWMwMDllLi5mODI1ZTA5MDViYjA5ZDNjOWQ0YzdjOTA4OWFlOWIwYzBmNmJjNGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VDbGlja01lbnVJdGVtKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0Nv
bnRleHRNZW51SXRlbVJlZiBpdGUKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotc3Rh
dGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBXZWJDb250
ZXh0TWVudSYgY29udGV4dE1lbnUpCitzdGF0aWMgUmVmPEFQSTo6QXJyYXk+IGNvbnRleHRNZW51
SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51KQogewogICAgIGF1dG8gaXRl
bXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcAppbmRleCBiN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0
YWUwLi5iNDA5YzU5ZDZkNTkxMjUyYzlmNzhlMmY2M2I1YjAxMzVlN2U0YWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKQogCiBX
S0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOworICAgIHJldHVybiB0b0FQSSgmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTY3JpcHRXb3JsZENsZWFyV3JhcHBlcnMoV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3Js
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0U2NyaXB0V29ybGQuY3BwCmluZGV4IGRjMDk1ZTBkN2E5MDBiNGQ2ZmM3OWUxNzVjMmM3
ODA5ZjNkZWY2YzEuLjhkNGM5NzhiZTAzNmIwZGIxZWRmY2RmMDU1MjA4MTg3NGVhYTM2MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcApAQCAtOTksMTAgKzk5
LDEwIEBAIHZvaWQgd2Via2l0U2NyaXB0V29ybGRXaW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNj
cmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnCiAgICAgZ19zaWduYWxfZW1pdCh3b3JsZCwg
c2lnbmFsc1tXSU5ET1dfT0JKRUNUX0NMRUFSRURdLCAwLCBwYWdlLCBmcmFtZSk7CiB9CiAKLXN0
YXRpYyBXZWJLaXRTY3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCkKK3N0YXRpYyBXZWJLaXRT
Y3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+JiYgc2NyaXB0V29ybGQpCiB7CiAgICAgV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxk
ID0gV0VCS0lUX1NDUklQVF9XT1JMRChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU0NSSVBUX1dP
UkxELCBOVUxMKSk7Ci0gICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gc2NyaXB0V29ybGQ7
CisgICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gV1RGTW92ZShzY3JpcHRXb3JsZCk7CiAK
ICAgICBBU1NFUlQoIXNjcmlwdFdvcmxkcygpLmNvbnRhaW5zKHdvcmxkLT5wcml2LT5zY3JpcHRX
b3JsZC5nZXQoKSkpOwogICAgIHNjcmlwdFdvcmxkcygpLmFkZCh3b3JsZC0+cHJpdi0+c2NyaXB0
V29ybGQuZ2V0KCksIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCmluZGV4IDJhOGYxN2E0
YWNmODZiMjc3OTJkYmRlMzdkNzNmYjA1YjViNjA3NjYuLmUwMTFmNjJlMDNmY2JhNzMwZGU0MTc3
NTg2OTYzNTAzYWQwMzNjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcApAQCAtNDIsMTQgKzQy
LDE0IEBAIHN0YXRpYyBET01IYW5kbGVDYWNoZSYgZG9tSGFuZGxlQ2FjaGUoKQogICAgIHJldHVy
biBjYWNoZTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRp
b25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JD
cmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsYXJhdGlvbikKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVEZWNsYXJhdGlvbikKIHsKICAgICBpZiAoIXN0eWxlRGVjbGFyYXRpb24pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBk
b21IYW5kbGVDYWNoZSgpLmFkZChzdHlsZURlY2xhcmF0aW9uLCBudWxscHRyKTsKICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGF1dG8gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5o
CmluZGV4IDg0YzkzYzFlZDc0NGFjODY3YjMzOGU2ZjU0NDAwZmRmMTk5YjNjZjEuLjk1ZDkyMGNh
YmMyOGM3ZjU5NDk5N2VkOTYyNjViNTlkZTM4MjE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5oCkBA
IC0yNyw4ICsyNyw4IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlv
bkhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNTU1N0
eWxlRGVjbGFyYXRpb25IYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
PiBnZXRPckNyZWF0ZShXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IGdldE9yQ3Jl
YXRlKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggMWEzNGE5MTQ0
YzdlMjg3MmYwM2Q4OWU4YzZmOWU4MThhYjdkYzY5ZC4uMjZlMWM2Y2QzYTVjYjQyNDMwMjM3NTE0
YWY5MWI2NTE4YzRlNjYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAKQEAgLTU3LDI3ICs1NywyNyBAQCBzdGF0aWMgRE9NSGFuZGxlQ2FjaGUm
IGRvbUhhbmRsZUNhY2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLVBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JD
cmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkKK1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAg
IFJhbmdlKiByYW5nZSA9IEpTUmFuZ2U6OnRvV3JhcHBlZCh0b0pTKGNvbnRleHQpLT52bSgpLCB0
b0pTKG9iamVjdCkpOwogICAgIHJldHVybiBnZXRPckNyZWF0ZShyYW5nZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUoUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbmdlKiByYW5n
ZSkKIHsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhh
bmRsZUNhY2hlKCkuYWRkKHJhbmdlLCBudWxscHRyKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAKLSAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6Y3JlYXRlKCpyYW5nZSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHJhbmdlSGFuZGxlLnB0cigpOwogICAgIHJldHVybiBXVEZNb3ZlKHJhbmdlSGFuZGxlKTsK
IH0KIAotUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCitSZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJhbmdlJiByYW5nZSkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKHJhbmdlKSk7
CiB9CkBAIC05Miw3ICs5Miw3IEBAIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6On5JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlKCkKICAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZShtX3Jhbmdl
LmdldCgpKTsKIH0KIAotUmFuZ2UqIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5n
ZSgpIGNvbnN0CitSYW5nZSYgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y29yZVJhbmdlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9yYW5nZS5nZXQoKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBA
QCBXZWJDb3JlOjpJbnRSZWN0IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmJvdW5kaW5nUmVj
dEluV2luZG93Q29vcmRpbmF0ZXMoKSBjbwogICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5jb250
ZW50c1RvV2luZG93KGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Uo
U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAg
ICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCk7CiAg
ICAgRnJhbWUqIGZyYW1lID0gb3duZXJEb2N1bWVudC5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCmluZGV4IDY0N2IxYzI0NGE5MzZkM2U3YzA5
M2ZkNWQ3YmE0NDAyNDQzZWE2MTcuLmY4MGUzM2FiZTgwNjUxZDk3OTE4YjhkYmZhMTQ5ZTQ2MWY1
NmJjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00NiwyNCArNDUsMjQgQEAgY2xhc3MgV2ViSW1hZ2U7CiAKIGNsYXNz
IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpCdW5kbGVSYW5nZUhhbmRsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRlKEpTQ29udGV4
dFJlZiwgSlNPYmplY3RSZWYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7CisgICAgc3RhdGljIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYs
IEpTT2JqZWN0UmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7CiAKICAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlKCk7CiAKICAgICBSZWY8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
PiBkb2N1bWVudCgpOwogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZGluZ1JlY3RJbldpbmRv
d0Nvb3JkaW5hdGVzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJ
bWFnZShTbmFwc2hvdE9wdGlvbnMpOworICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJbWFn
ZShTbmFwc2hvdE9wdGlvbnMpOwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAKLSAgICBXZWJD
b3JlOjpSYW5nZSogY29yZVJhbmdlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6UmFuZ2UmIGNvcmVS
YW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7Ci0gICAgSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZShXZWJDb3JlOjpSYW5nZSopOworICAgIHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OlJhbmdlJik7CisgICAgSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZShXZWJDb3JlOjpSYW5nZSYpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiBtX3JhbmdlOworICAgIFJlZjxXZWJDb3JlOjpSYW5nZT4gbV9yYW5nZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5MmI2ZmRiMWZh
Njk5MzllZjllZTU3YjM5MmY1ZTNlNjc4MDAwM2Y2Li42MWQ5Y2MwN2M4ZTg5MGE5MzA5ODFmYzdh
ODQ0OTQzM2I0MTE4ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtODgsNyArODgsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRp
b25Vc2VyRGF0YSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0
ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9i
amVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKICAgICBhdXRvIGJ1bmRsZSA9IGFkb3B0
UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGUocGFyYW1ldGVycykpOwogCkBAIC01NzIsNyArNTcyLDcg
QEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJl
ZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganMKIH0KIAogLy8gRklYTUUgR2V0IHJpZCBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCBtb3ZlIGl0IGludG8gV0tCdW5kbGUuY3BwLgotUGFzc1JlZlB0cjxBUEk6
OkRhdGE+IEluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKK1JlZjxBUEk6OkRhdGE+IEluamVjdGVk
QnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgZGF0YSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlID0gdG9K
Uyhjb250ZXh0KTsKICAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXlEYXRhID0gV2ViQ29yZTo6
dG9VbnNoYXJlZFVpbnQ4QXJyYXkoZXhlY1N0YXRlLT52bSgpLCB0b0pTKGV4ZWNTdGF0ZSwgZGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDAwMDU1MGJmZjI0MWNjMDVkNjU0Y2U4ZjExNjlk
ZTJhNzJjNjMxYTAuLjhmMzM3Y2M5ZjMwYmJjOGRjNzAxNjg0NDgxYzk1ZjI4MTU5YThhOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJXS0J1bmRsZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVXNlclNjcmlwdFR5cGVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03NSw3ICs3NSw3IEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZSA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRh
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29uc3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJE
YXRhKTsKIAogICAgIH5JbmplY3RlZEJ1bmRsZSgpOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXZWJQYWdlKiwgY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCByZW1vdmVB
bGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7CiAgICAgdWludDY0X3Qgd2Vi
Tm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKLSAgICBQYXNzUmVmUHRy
PEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNW
YWx1ZVJlZik7CisgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5
KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICAgICAvLyBVc2VyQ29udGVudCBBUEkKICAg
ICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBBUEk6
OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNj
cmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBl
ODc5MDViY2EyYzNkOTZkYmM5ZjkxMjVkZWVlYjYwODdkZDgzODZiLi4zZjI2MDg0YjFlNGU3YmI1
YWMwOWUwNjEyYzBlN2Q1N2VmZWE0Yjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0Ojpp
dGVtQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CitSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgo
aW50IGluZGV4KSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUGFnZSogcGFnZSA9IG1fcGFnZS0+Y29yZVBh
Z2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpj
cmVhdGUocGFnZS0+YmFja0ZvcndhcmQoKS5pdGVtQXRJbmRleChpbmRleCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggYTQ0ZDBiOTYy
MDBiMDIzMWU2YjllYTcxMWRjMDhiYmEyNDU3MTYwYy4uOWVkYWZhYWM3ZWY5NzgyNzc4NDdlYWVk
N2M4MDAwOTkwODE4NWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3QuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdF9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKQEAgLTQyLDExICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsKICAgICB9CiAKLSAgICB2
b2lkIGRldGFjaCgpIHsgbV9wYWdlID0gMDsgfQorICAgIHZvaWQgZGV0YWNoKCkgeyBtX3BhZ2Ug
PSBudWxscHRyOyB9CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBQYXNzUmVmUHRyPEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBjb25zdDsKKyAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBpdGVtQXRJbmRleChp
bnQpIGNvbnN0OwogICAgIGludCBiYWNrTGlzdENvdW50KCkgY29uc3Q7CiAgICAgaW50IGZvcndh
cmRMaXN0Q291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggNDI4MjdmNmY0ZmVlZTE1NDdlOWI2ZDhkZTU2MDMx
NGQxYzUzZDFiZC4uMTVlNmE1NzFiNjVlZmQ0MzE1ZGU5ZWM4OWIxMzViN2ZkMmQ5MDQ5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBA
IC0zOSwxMSArMzksMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUo
UGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkKKyAgICBzdGF0aWMgUmVmUHRy
PEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKFJlZlB0cjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mJiBpdGVtKQogICAgIHsKICAgICAgICAgaWYgKCFpdGVtKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbShXVEZNb3ZlKGl0ZW0pKSk7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qIGl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2l0ZW0uZ2V0KCk7IH0KQEAgLTYwLDcgKzYwLDkg
QEAgcHVibGljOgogICAgIFJlZjxBUEk6OkFycmF5PiBjaGlsZHJlbigpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbShQYXNzUmVmUHRyPFdl
YkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtKSA6IG1faXRlbShpdGVtKSB7IH0KKyAgICBleHBsaWNp
dCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oUmVmUHRyPFdlYkNvcmU6Okhpc3Rv
cnlJdGVtPiYmIGl0ZW0pCisgICAgICAgIDogbV9pdGVtKFdURk1vdmUoaXRlbSkpCisgICAgeyB9
CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IG1faXRlbTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggODI2ZDM3MjE5YmIw
NmE4NjdlNmZiMTc0NTQ4YzdjMDhlMDczMGY1NS4uOGQwODdkM2NjNGM5ZjJhY2ExMDU2ZDNjNmI5
YmU3YjA3NjI1ODc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIFJlZjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQ+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvbnN0IEhpdFRlCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KGhpdFRlc3RS
ZXN1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6bm9kZUhhbmRsZSgpIGNvbnN0CitSZWY8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6Om5vZGVIYW5kbGUo
KSBjb25zdAogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3Jl
YXRlKG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6
OnVybEVsZW1lbnRIYW5kbGUoKSBjb25zdAorUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4g
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShtX2hpdFRl
c3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5oCmluZGV4IDI1ODJiNDdkZGY5OWE3N2Y4NmQ4NGU0ODFmYzdiNGYwNTFkOTAy
NzIuLmNmYzkwNGVkOTQxZGY5ODc3ZTg4MmU3MTdlMjJjODBkNmU2MzVjMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaApAQCAtMzAsNyArMzAsNyBAQAogI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlwZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDggKzQ0LDggQEAgcHVi
bGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgY29yZUhpdFRlc3RSZXN1
bHQoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RSZXN1bHQ7IH0KIAotICAgIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlKCkgY29uc3Q7Ci0gICAgUGFzc1Jl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IHVybEVsZW1lbnRIYW5kbGUoKSBjb25zdDsK
KyAgICBSZWY8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlKCkgY29uc3Q7Cisg
ICAgUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gdXJsRWxlbWVudEhhbmRsZSgpIGNvbnN0
OwogICAgIFdlYkZyYW1lKiBmcmFtZSgpIGNvbnN0OwogICAgIFdlYkZyYW1lKiB0YXJnZXRGcmFt
ZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggMzU2OWZkODc1YmU4NmM5NTg2ZjBlZTdiMjUwMDEzYzk3YzNjNTNkZS4u
NzZkNTA2OGY1OTI3OTliYjIwNTJiYjhkZGJhZTIwMTY1ZWE4ODE5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtOTcsMTIgKzk3LDEy
IEBAIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrCiAgICAgcmV0dXJuIHN5bnRoZXRpY0NsaWNrVHlw
ZUZvck1vdXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFj
dGlvbikpOwogfQogCi1SZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkK
K1JlZjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oZnJhbWUsIGFjdGlv
biwgZm9ybVN0YXRlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKGZyYW1lLCBhY3Rpb24sIFdURk1vdmUoZm9ybVN0YXRlKSkpOwogfQog
Ci1JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRp
b25BY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCitJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIFJlZlB0
cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlKQogICAgIDogbV9uYXZpZ2F0aW9uVHlwZShuYXZpZ2F0
aW9uQWN0aW9uLnR5cGUoKSkKICAgICAsIG1fbW9kaWZpZXJzKG1vZGlmaWVyc0Zvck5hdmlnYXRp
b25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpCiAgICAgLCBtX21vdXNlQnV0dG9uKFdlYk1vdXNl
RXZlbnQ6Ok5vQnV0dG9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmgKaW5kZXggYjM3NjZlMzI2MWEwMGU4MTVhOWU2MzU2ZTI5YWViMTUyYWE4NjFiYi4u
ZmE2YTJhNTQ4Yjc2ZGY3MGFjNDU2ZmJiMTZhNGY3NzAwNDIyMThhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV2ViRnJh
bWU7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4g
Y3JlYXRlKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiYmKTsKIAogICAgIHN0YXRp
YyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpC
dXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mKTsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIEF0b21pY1N0cmlu
ZyBkb3dubG9hZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRBdHRyaWJ1dGU7
IH0KIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJh
bWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGb3JtU3RhdGU+KTsKKyAgICBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJh
bWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmUHRyPFdlYkNvcmU6OkZv
cm1TdGF0ZT4mJik7CiAKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBtX25hdmlnYXRpb25U
eXBlOwogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbV9tb2RpZmllcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAppbmRleCA5ZTExYTc2Mjg4MWMwMDY2YWRiYWQ4
NWEwYmQ3ZjY3MzI2NTIxNzI5Li41YjZiYzBjMzQ5NjUzMmI1OWNmMWQwNDZjOTQwYmU5OTc4NmE3
OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG4KICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdv
cmxkKCksIG5hbWUpKTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
PiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZShET01XcmFwcGVyV29ybGQm
IHdvcmxkKQorUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6OmdldE9yQ3JlYXRlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAgICAgaWYg
KCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybiBub3Jt
YWxXb3JsZCgpOwpAQCAtNjksMTIgKzY5LDEyIEBAIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZD4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUoRE9NCiAg
ICAgaWYgKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIGV4aXN0aW5nV29ybGQgPSBhbGxXb3Js
ZHMoKS5nZXQoJndvcmxkKSkKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nV29ybGQ7CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQsIHVuaXF1
ZVdvcmxkTmFtZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCh3b3JsZCwgdW5pcXVlV29ybGROYW1lKCkpKTsKIH0KIAotSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKQor
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9y
bWFsV29ybGQoKQogewotICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3Js
ZCA9IGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpLCBTdHJpbmcoKSkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYgd29ybGQgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZygpKSkubGVha1JlZigpOwogICAg
IHJldHVybiB3b3JsZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQu
aAppbmRleCBmZTc5NmY2ZTg1M2MzYjhiZGNlZGQ1MzJhNDhlMjY4Mzk4NjQ4ZWNiLi41MDkyYWU3
MjU3NmVjYTE4NmIyYjU0ODZiZGY1ZjE2ZGE5Njc5NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsOCArNDEsOCBA
QCBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RE9N
V3JhcHBlcldvcmxkJik7Ci0gICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIG5v
cm1hbFdvcmxkKCk7CisgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBn
ZXRPckNyZWF0ZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKKyAgICBzdGF0aWMgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCYgbm9ybWFsV29ybGQoKTsKIAogICAgIHZpcnR1YWwgfkluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXgg
MTdkMzVjOTRhMDkxYzgxNjdjNWU3YzdmZjczNDU4ZGQ5Yjc1MTdjYi4uYTRkN2YxYTkwY2M5MDI5
MWE3NzEwOWQxNjgxZmUyNGJiMzMyMDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBA
IC01MywxOCArNTMsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUaGUgcGx1Zy1pbiB0aGF0
IHdlJ3JlIGN1cnJlbnRseSBjYWxsaW5nIE5QUF9OZXcgZm9yLgogc3RhdGljIE5ldHNjYXBlUGx1
Z2luKiBjdXJyZW50TlBQTmV3UGx1Z2luOwogCi1SZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNj
YXBlUGx1Z2luOjpjcmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2lu
TW9kdWxlKQorUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdpbjo6Y3JlYXRlKFJl
ZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4mJiBwbHVnaW5Nb2R1bGUpCiB7CiAgICAgaWYgKCFw
bHVnaW5Nb2R1bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0c2NhcGVQbHVnaW4ocGx1Z2luTW9kdWxlKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTmV0c2NhcGVQbHVnaW4ocGx1Z2luTW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpKTsK
IH0KICAgICAKLU5ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbihQYXNzUmVmUHRyPE5ldHNj
YXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpCitOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQ
bHVnaW4oUmVmPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmIHBsdWdpbk1vZHVsZSkKICAgICA6IFBs
dWdpbihOZXRzY2FwZVBsdWdpblR5cGUpCiAgICAgLCBtX25leHRSZXF1ZXN0SUQoMCkKLSAgICAs
IG1fcGx1Z2luTW9kdWxlKHBsdWdpbk1vZHVsZSkKKyAgICAsIG1fcGx1Z2luTW9kdWxlKFdURk1v
dmUocGx1Z2luTW9kdWxlKSkKICAgICAsIG1fbnBXaW5kb3coKQogICAgICwgbV9pc1N0YXJ0ZWQo
ZmFsc2UpCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0xMTAyLDcgKzExMDIsNyBAQCBTY3JvbGxi
YXIqIE5ldHNjYXBlUGx1Z2luOjp2ZXJ0aWNhbFNjcm9sbGJhcigpCiBib29sIE5ldHNjYXBlUGx1
Z2luOjpzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgcmV0dXJuIG1fcGx1Z2luTW9kdWxlICYmIG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWly
a3MoKS5jb250YWlucyhQbHVnaW5RdWlya3M6OlN1cHBvcnRzU25hcHNob3R0aW5nKTsKKyAgICBy
ZXR1cm4gbV9wbHVnaW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJr
czo6U3VwcG9ydHNTbmFwc2hvdHRpbmcpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCA3ODIyN2Y1Zjk0ZjRhYzc0ZGEwNTU2MGViNDY0Mjc2
ZTQzMWRhNGE5Li4wN2M4YjA4NmFiODllZDk3YWY0NDIyNDlmOGE3ODEyZmNmY2I5ZTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdp
blVuaXg7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQdHI8TmV0
c2NhcGVQbHVnaW5Nb2R1bGU+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBj
cmVhdGUoUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmKTsKICAgICB2aXJ0dWFsIH5OZXRz
Y2FwZVBsdWdpbigpOwogCiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gZnJvbU5Q
UChOUFApOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIE5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSk7CisgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVnaW4o
UmVmPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmKTsKIAogICAgIHZvaWQgY2FsbFNldFdpbmRvdygp
OwogICAgIHZvaWQgY2FsbFNldFdpbmRvd0ludmlzaWJsZSgpOwpAQCAtMjg2LDcgKzI4Niw3IEBA
IHByaXZhdGU6CiAgICAgU3RyZWFtc01hcCBtX3N0cmVhbXM7CiAgICAgSGFzaE1hcDx2b2lkKiwg
c3RkOjpwYWlyPFJlZlB0cjxOZXRzY2FwZVBsdWdpblN0cmVhbT4sIFN0cmluZz4+IG1fcmVkaXJl
Y3RzOwogCi0gICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBtX3BsdWdpbk1vZHVsZTsK
KyAgICBSZWY8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1Z2luTW9kdWxlOwogICAgIE5QUF90
IG1fbnBwOwogICAgIE5QV2luZG93IG1fbnBXaW5kb3c7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgK
aW5kZXggZjYzMzk3MDFlNjYwMTA5ZTI5MWE4ZmMwYzViOTFhNDk4OWEzNGViZS4uYWZkYTE3MTEz
YTY1NzNiNDBmNWU0MmRkZDAzMjQyZDllYWRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgUERGUGx1Z2luOwogCiBjbGFzcyBQREZQbHVnaW5Bbm5v
dGF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UERGUGx1Z2luQW5ub3RhdGlvbj4gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBERlBsdWdpbkFubm90YXRpb24+IGNyZWF0ZShQREZB
bm5vdGF0aW9uICosIFBERkxheWVyQ29udHJvbGxlciAqLCBQREZQbHVnaW4qKTsKKyAgICBzdGF0
aWMgUmVmUHRyPFBERlBsdWdpbkFubm90YXRpb24+IGNyZWF0ZShQREZBbm5vdGF0aW9uICosIFBE
RkxheWVyQ29udHJvbGxlciAqLCBQREZQbHVnaW4qKTsKICAgICB2aXJ0dWFsIH5QREZQbHVnaW5B
bm5vdGF0aW9uKCk7CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbGVtZW50LmdldCgpOyB9CkBAIC03NSw3ICs3NSw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKTsKIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlv
bkVsZW1lbnQoKSA9IDA7CisgICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRl
QW5ub3RhdGlvbkVsZW1lbnQoKSA9IDA7CiAKICAgICBjbGFzcyBQREZQbHVnaW5Bbm5vdGF0aW9u
RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKICAgICBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KaW5kZXggNDIyYmRhYzQ5YjRmODgxY2FmYTI4MzVi
NzE2MmJkZThiNjFiOWIxYy4uNzRkY2JjODM3OTE0YzQzNzcyZGFhZDc1OWNlMWFmYmQ3NzA2OWJh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5Bbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQpAQCAtNTIsMTQgKzUyLDE0IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1QYXNzUmVmUHRyPFBE
RlBsdWdpbkFubm90YXRpb24+IFBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0
aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwg
UERGUGx1Z2luKiBwbHVnaW4pCitSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gUERGUGx1Z2lu
QW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm90YXRpb24sIFBERkxheWVyQ29u
dHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikKIHsKICAgICBp
ZiAoW2Fubm90YXRpb24gaXNLaW5kT2ZDbGFzczpwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNz
KCldKQogICAgICAgICByZXR1cm4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShhbm5v
dGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbik7CiAgICAgaWYgKFthbm5vdGF0aW9u
IGlzS2luZE9mQ2xhc3M6cGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzKCldKQogICAgICAg
ICByZXR1cm4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlKGFubm90YXRpb24sIHBk
ZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaChFbGVtZW50KiBw
YXJlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCmluZGV4IDZhZjg3Y2Q3Zjky
YjY4MGYxMmU0Mjc4MDNjODY2MmVjNWVlMmJiOTQuLjBmNzY3NWM1ZDIzMWQ1N2Q5MmJkNjI3OTM2
ZTllMDI0ZDJlMWM2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCkBAIC01
MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICBS
ZWY8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsK
IAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9p
Y2VBbm5vdGF0aW9uLm1tCmluZGV4IDI3MzUwMzI1MmYwMDY4ZmJhZmRkZGJmM2ZkOWVlMjI0YjZm
NmNmNWMuLmRiZTVhZTk3NTFmZWRjOGM4ZGYyMjEzMGY0YmFlM2EwMzkxZGJkY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNl
QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBQREZQ
bHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjb21taXQoKQogICAgIFBERlBsdWdpbkFubm90YXRpb246
OmNvbW1pdCgpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90
YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKK1JlZjxFbGVtZW50PiBQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gcGFyZW50KCktPmRvY3VtZW50KCk7CiAjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaApAQCAtNzQsMTMgKzc0LDEzIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIFBERkFu
bm90YXRpb25DaG9pY2VXaWRnZXQgKmNob2ljZUFubm90YXRpb24gPSB0aGlzLT5jaG9pY2VBbm5v
dGF0aW9uKCk7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAKLSAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc2VsZWN0VGFnLCBmYWxzZSk7
CisgICAgYXV0byBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzZWxlY3RUYWcsIGZh
bHNlKTsKIAotICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
dHlsZWRFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9
IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQuZ2V0KCkpOwogCiAgICAgLy8gRklYTUU6
IE1hdGNoIGZvbnQgd2VpZ2h0IGFuZCBzdHlsZSBhcyB3ZWxsPwotICAgIHN0eWxlZEVsZW1lbnQt
PnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xv
cihjaG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKLSAgICBzdHlsZWRF
bGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgY2hv
aWNlQW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKGNob2lj
ZUFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxpemVkKCkpOworICAgIHN0eWxlZEVsZW1lbnQu
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGNob2ljZUFubm90
YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKIAogICAgIE5TQXJyYXkgKmNob2ljZXMgPSBjaG9pY2VB
bm5vdGF0aW9uLmNob2ljZXM7CiAgICAgTlNTdHJpbmcgKnNlbGVjdGVkQ2hvaWNlID0gY2hvaWNl
QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZTsKQEAgLTkzLDcgKzkzLDcgQEAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgp
CiAgICAgICAgIGlmIChjaG9pY2UgPT0gc2VsZWN0ZWRDaG9pY2UpCiAgICAgICAgICAgICBjaG9p
Y2VPcHRpb24tPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc2VsZWN0ZWRBdHRy
LCBBdG9taWNTdHJpbmcoInNlbGVjdGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogCi0gICAgICAgIHN0eWxlZEVsZW1lbnQtPmFwcGVuZENoaWxkKGNob2ljZU9wdGlv
bik7CisgICAgICAgIHN0eWxlZEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hvaWNlT3B0aW9uKTsKICAg
ICB9CiAKICAgICByZXR1cm4gZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKaW5k
ZXggMTYzMjUwYWRiYzU4MDU4ZWQzYjA2ZmI1YjA5NWIwNjE0YTFmZTI4MC4uMzZlMmU4MmIzYjI4
MGE4ZjYxYmFhN2M1Mjc1YjlkYTc0NzM4YjRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxk
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRl
OworICAgIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQppbmRleCAwYTkwNzA3NjQ2NzYwYTlk
M2JlZDg2NzYxM2ExZmM2MTNjYzA4NDZkLi42Nzc4NDg5ZDhjMDFjNmUyMzdjZTVkNjRmNWM3MjE5
YTQyOTAzOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC01Myw5ICs1Myw5
IEBAIFBERlBsdWdpblBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCkKICAg
ICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQs
ICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQ
bHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitSZWY8RWxlbWVu
dD4gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewot
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNy
ZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gUERGUGx1Z2luVGV4
dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CiAgICAgZWxlbWVudC0+c2V0
QXR0cmlidXRlKHR5cGVBdHRyLCAicGFzc3dvcmQiKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7
CiAgICAgcmV0dXJuIGVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKaW5kZXgg
YThlNjJlOWNjNTE2NThhYmU1NTU4ZjljMGQ3MmY4YzAxY2VkOWUxOC4uMGNhZTZmMDBmZWU3MDEx
ODdjMjQ3NGE4ZTdlMjE4YTFjMmEyNzU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24u
aApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlk
ZTsKKyAgICBSZWY8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFu
bm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tCmluZGV4IGJjZjljNTVlYTIzMzMzMDI1NmU2MTllNWVlNWJk
YWRiNzY3MTJlM2QuLjdkYWRhMDRjNTA5NmY3YWE2NGE4ZGZlMjg3NWMxNDg3MjBjYmNmYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
VGV4dEFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAtNzksNyArNzksNyBAQCBQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbjo6flBERlBsdWdpblRleHRBbm5vdGF0aW9uKCkKICAgICBlbGVtZW50
KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50
TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRl
eHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitSZWY8RWxlbWVudD4gUERG
UGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKIHsKICAgICBS
ZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKIApAQCAtOTAsMjcgKzkwLDIzIEBAIFBhc3NSZWZQdHI8
RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICBib29sIGlzTXVsdGlsaW5lID0g
dGV4dEFubm90YXRpb24uaXNNdWx0aWxpbmU7CiAKLSAgICBpZiAoaXNNdWx0aWxpbmUpCi0gICAg
ICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRleHRhcmVhVGFnLCBmYWxzZSk7
Ci0gICAgZWxzZQotICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpbnB1
dFRhZywgZmFsc2UpOwotCisgICAgYXV0byBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dChpc011bHRpbGluZSA/IHRleHRhcmVhVGFnIDogaW5wdXRUYWcsIGZhbHNlKQogICAgIGVsZW1l
bnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50TGlz
dGVuZXIoKSwgZmFsc2UpOwogCi0gICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0
YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKyAgICBhdXRvJiBzdHls
ZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudCY+KGVsZW1lbnQuZ2V0KCkpOwogCiAg
ICAgaWYgKCF0ZXh0QW5ub3RhdGlvbikKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAKICAgICAv
LyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/Ci0gICAgc3R5bGVk
RWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZy
b21OU0NvbG9yKHRleHRBbm5vdGF0aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKLSAgICBz
dHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWls
eSwgdGV4dEFubm90YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKLSAgICBzdHlsZWRFbGVtZW50LT5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBjc3NBbGlnbm1lbnRW
YWx1ZUZvck5TVGV4dEFsaWdubWVudCh0ZXh0QW5ub3RhdGlvbi5hbGlnbm1lbnQpKTsKKyAgICBz
dHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29s
b3JGcm9tTlNDb2xvcih0ZXh0QW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlhbGl6ZWQoKSk7Cisg
ICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZh
bWlseSwgdGV4dEFubm90YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKKyAgICBzdHlsZWRFbGVtZW50
LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGNzc0FsaWdubWVu
dFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KHRleHRBbm5vdGF0aW9uLmFsaWdubWVudCkpOwogCiAg
ICAgaWYgKGlzTXVsdGlsaW5lKQotICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50
PihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUodGV4dEFubm90YXRpb24uc3RyaW5nVmFsdWUpOwor
ICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50PihzdHlsZWRFbGVtZW50KS5zZXRW
YWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7CiAgICAgZWxzZQotICAgICAgICBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUodGV4dEFubm90
YXRpb24uc3RyaW5nVmFsdWUpOworICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihz
dHlsZWRFbGVtZW50KS5zZXRWYWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7CiAKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApp
bmRleCA4NDZlOGJkZmJlOTNkMTZhMjgxYmJmMmFhYzNjMTFiNzZjZDMyMWI3Li4xYzg2YTgwMDZk
YmUyYWFjNDc1MDhmYTdhNzQ4MDkwN2M2M2M1NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
c3RkOjpwYWlyPFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiwgdW5zaWduZWQ+CiAK
IHN0YXRpYyBXb3JsZE1hcCYgd29ybGRNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxXb3JsZE1hcD4gbWFwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQ
YWlyVHlwZT4geyB7IDEsIHN0ZDo6bWFrZV9wYWlyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKCksIDEpIH0gfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxk
TWFwPiBtYXAoc3RkOjppbml0aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBl
PiB7IHsgMSwgc3RkOjptYWtlX3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1h
bFdvcmxkKCksIDEpIH0gfSk7CiAKICAgICByZXR1cm4gbWFwOwogfQpAQCAtMjA4LDkgKzIwOCw5
IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRM
RVJTKQogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5IDogcHVibGlj
IFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3IgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4gY3Jl
YXRlKFdlYlVzZXJDb250ZW50Q29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBu
YW1lLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgaWRlbnRpZmll
cikKKyAgICBzdGF0aWMgUmVmPFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4g
Y3JlYXRlKFdlYlVzZXJDb250ZW50Q29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgU3RyaW5n
JiBuYW1lLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgaWRlbnRp
ZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVXNlck1lc3NhZ2VI
YW5kbGVyRGVzY3JpcHRvclByb3h5KGNvbnRyb2xsZXIsIG5hbWUsIHdvcmxkLCBpZGVudGlmaWVy
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JQcm94eShjb250cm9sbGVyLCBuYW1lLCB3b3JsZCwgaWRlbnRpZmllcikpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgfldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA1ZjQ1NjU0ZWY3YjQwMjg2YmJk
ZWFiNThmMmUyZTJjMDg5OTY5ZWU3Li5iNDZlOWFhMDY5NzVhYWIyOTUyMjFhZWI4OTI4MThiZTg2
MDA5ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTU5LDcgKzU5LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRp
YyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAoTlNJbWFn
ZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKK3N0YXRpYyBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewogICAgIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7CiAjaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwZTExNzgyNTQ5MzRhYTUwZDQ4
ZTJmN2FmMzQ1NWIyYzM1MmU0YjMxLi44ZmUzMDJhOWZmZTMwNTZiYzE1ZDMxMjhlMmQwMWM3YjRl
NTM5MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01NzkzLDE0ICs1NzkzLDE0IEBAIHZvaWQgV2ViUGFnZTo6YWRkVXNlclNjcmlwdChj
b25zdCBTdHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyCiB7CiAg
ICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5r
VVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGlvblRpbWUs
IGluamVjdGVkRnJhbWVzIH07CiAKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNl
clNjcmlwdCgqSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92
ZSh1c2VyU2NyaXB0KSk7CisgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3Jp
cHQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2Vy
U2NyaXB0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMpCiB7CiAgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXR7IHNv
dXJjZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZVVzZXJMZXZlbCB9OwogCi0gICAgbV91c2Vy
Q29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KCpJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CisgICAgbV91
c2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpyZW1vdmVBbGxVc2VyQ29udGVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwCmluZGV4IDFhNWUxMDJlYzYzNDkzOTU2ZTIwNmY3ZTZiMzVjMzVkYmY0MzdkNTQuLmM4
YzkzYjJiOTA1ODdkYzA2OTZmYzVkYTZiYWM0NDAyM2EzNzUxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwCkBAIC0zNzksNyArMzc5LDcgQEAgc3RydWN0IFByaW50UGFnZXNEYXRhIHsK
ICAgICBib29sIGlzVmFsaWQgOiAxOwogfTsKIAotUGFzc1JlZlB0cjxXZWJQcmludE9wZXJhdGlv
bkd0az4gV2ViUHJpbnRPcGVyYXRpb25HdGs6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbykKK1JlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gV2ViUHJp
bnRPcGVyYXRpb25HdGs6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBjb25zdCBQcmludEluZm8mIHBy
aW50SW5mbykKIHsKICNpZiBIQVZFKEdUS19VTklYX1BSSU5USU5HKQogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViUHJpbnRPcGVyYXRpb25HdGtVbml4KHBhZ2UsIHByaW50SW5mbykpOwpAQCAt
Mzg4LDcgKzM4OCw3IEBAIFBhc3NSZWZQdHI8V2ViUHJpbnRPcGVyYXRpb25HdGs+IFdlYlByaW50
T3BlcmF0aW9uR3RrOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgY29uCiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShwYWdlKTsKICAgICBVTlVTRURfUEFSQU0ocHJpbnRJbmZvKTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmgKaW5kZXggZjVmZWMxMDZjYTI3OTRiNTY3NTYxODUzZmE4MzExNDYxOTA1MWM0NC4uNzQzY2My
Y2U1MjU4OTdkMTkwN2I4MmViZmIyNDEyM2Q4MjIzMDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuaApAQCAtMjgsOCArMjgsOCBAQAogCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiB0eXBlZGVmIHN0cnVjdCBfR3RrUHJpbnRTZXR0
aW5ncyBHdGtQcmludFNldHRpbmdzOwpAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBXZWJQYWdlOwog
CiBjbGFzcyBXZWJQcmludE9wZXJhdGlvbkd0ayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlByaW50
T3BlcmF0aW9uR3RrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUHJpbnRP
cGVyYXRpb25HdGs+IGNyZWF0ZShXZWJQYWdlKiwgY29uc3QgUHJpbnRJbmZvJik7CisgICAgc3Rh
dGljIFJlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gY3JlYXRlKFdlYlBhZ2UqLCBjb25zdCBQ
cmludEluZm8mKTsKICAgICB2aXJ0dWFsIH5XZWJQcmludE9wZXJhdGlvbkd0aygpOwogCiAgICAg
V2ViQ29yZTo6UHJpbnRDb250ZXh0KiBwcmludENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3By
aW50Q29udGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDA1Y2YxMTA4YmQwNzAzYjk4YTA2ZDI2NzIzNWIwOTRj
YjAxMTk0OTEuLjkxYjhmMjM1MDA4MTA2YTE1NmEzNWNkYWIzODA1YjVhMDhhZDk1YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTExNzgsNyArMTE3OCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWluCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQsIGdlc3R1cmVU
eXBlLCBnZXN0dXJlU3RhdGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmbGFncyksIGNhbGxiYWNr
SUQpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9zaXRpb24oRnJh
bWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGJhc2VJc1N0
YXJ0KQorc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQpCiB7CiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0ID0gcG9z
aXRpb247CkBAIC0xMjAzLDEwICsxMjAzLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBy
YW5nZUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwCiAg
ICAgICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCByZXN1
bHQsIHNlbGVjdGlvbkVuZCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJhbmdlLnJlbGVhc2UoKTsK
KyAgICByZXR1cm4gcmFuZ2U7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUF0
V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uLCBib29sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0
aW9uKQorc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9u
KEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNl
SXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBTZWxlY3Rpb25E
aXJlY3Rpb24gc2FtZURpcmVjdGlvbiA9IGJhc2VJc1N0YXJ0ID8gRGlyZWN0aW9uRm9yd2FyZCA6
IERpcmVjdGlvbkJhY2t3YXJkOwogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBvcHBvc2l0ZURpcmVj
dGlvbiA9IGJhc2VJc1N0YXJ0ID8gRGlyZWN0aW9uQmFja3dhcmQgOiBEaXJlY3Rpb25Gb3J3YXJk
OwpAQCAtMTIxNiw3ICsxMjE2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQXRX
b3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2kKIAogICAgIGlm
IChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQsIFdvcmRHcmFudWxhcml0eSwgc2FtZURp
cmVjdGlvbikpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHdvcmQgYm91bmRhcnkuIExlYXZlIHNl
bGVjdGlvbiB3aGVyZSBpdCBpcy4KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAogICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShleHRlbnQs
IFdvcmRHcmFudWxhcml0eSwgb3Bwb3NpdGVEaXJlY3Rpb24pKSB7CkBAIC0xMjUxLDcgKzEyNTEs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0
aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaQogICAgIGlmIChleHRlbnQuaXNOdWxsKCkgfHwg
ZXh0ZW50ID09IGJhc2UpCiAgICAgICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICBpZiAo
ZXh0ZW50LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICByZXR1cm4gKGJhc2UgPCBleHRlbnQpID8gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUt
PmRvY3VtZW50KCksIGJhc2UsIGV4dGVudCkgOiBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1l
bnQoKSwgZXh0ZW50LCBiYXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgK
aW5kZXggNjMzOWIyMjMwNjYzOGUwMmYwZjA5ZjFjZmU4NzJlMTU2M2I3NDliNS4uMTg3YzFkODMx
YWRhODAwMzhiZjE3Nzc5ZDZiNmI5Y2U4Y2RiZTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLmgKQEAgLTE2Myw5ICsxNjMsOSBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAg
ICAgfQogCi0gICAgICAgIEtleWZyYW1lVmFsdWUoUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb24+IHZhbHVlKQorICAgICAgICBLZXlmcmFtZVZhbHVlKFJlZlB0cjxXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb24+JiYgdmFsdWUpCiAgICAgICAgICAgICA6IGtleVR5cGUoRmlsdGVyS2V5
VHlwZSkKLSAgICAgICAgICAgICwgZmlsdGVyKHZhbHVlKQorICAgICAgICAgICAgLCBmaWx0ZXIo
V1RGTW92ZSh2YWx1ZSkpCiAgICAgICAgIHsKICAgICAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309961</attachid>
            <date>2017-05-12 16:01:21 -0700</date>
            <delta_ts>2017-05-12 16:07:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512160120.patch</filename>
            <type>text/plain</type>
            <size>51932</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggMWFlYzBiOTIyZWUzZWVkOWI0YTIx
ZGQ3NTYyNmE2Zjg1OGM0NjE1Zi4uOGNjNjI4YWMxNzYzZmE1Njk1ZDc0MTA1YzNlNDhlOThlODc4
NGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTQyLDcgKzQyLDcgQEAgKyAoV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKil3b3JsZAogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKW5vcm1hbFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoKkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA5NGFiNGRhNzU4YTBmMzA1ZTZmYzg0YmY2
YjljMjQ2NjQ0MWMwMDllLi5mODI1ZTA5MDViYjA5ZDNjOWQ0YzdjOTA4OWFlOWIwYzBmNmJjNGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VDbGlja01lbnVJdGVtKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0Nv
bnRleHRNZW51SXRlbVJlZiBpdGUKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotc3Rh
dGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBXZWJDb250
ZXh0TWVudSYgY29udGV4dE1lbnUpCitzdGF0aWMgUmVmPEFQSTo6QXJyYXk+IGNvbnRleHRNZW51
SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51KQogewogICAgIGF1dG8gaXRl
bXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcAppbmRleCBiN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0
YWUwLi5iNDA5YzU5ZDZkNTkxMjUyYzlmNzhlMmY2M2I1YjAxMzVlN2U0YWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKQogCiBX
S0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOworICAgIHJldHVybiB0b0FQSSgmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTY3JpcHRXb3JsZENsZWFyV3JhcHBlcnMoV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3Js
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0U2NyaXB0V29ybGQuY3BwCmluZGV4IGRjMDk1ZTBkN2E5MDBiNGQ2ZmM3OWUxNzVjMmM3
ODA5ZjNkZWY2YzEuLjhkNGM5NzhiZTAzNmIwZGIxZWRmY2RmMDU1MjA4MTg3NGVhYTM2MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcApAQCAtOTksMTAgKzk5
LDEwIEBAIHZvaWQgd2Via2l0U2NyaXB0V29ybGRXaW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNj
cmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnCiAgICAgZ19zaWduYWxfZW1pdCh3b3JsZCwg
c2lnbmFsc1tXSU5ET1dfT0JKRUNUX0NMRUFSRURdLCAwLCBwYWdlLCBmcmFtZSk7CiB9CiAKLXN0
YXRpYyBXZWJLaXRTY3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCkKK3N0YXRpYyBXZWJLaXRT
Y3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+JiYgc2NyaXB0V29ybGQpCiB7CiAgICAgV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxk
ID0gV0VCS0lUX1NDUklQVF9XT1JMRChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU0NSSVBUX1dP
UkxELCBOVUxMKSk7Ci0gICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gc2NyaXB0V29ybGQ7
CisgICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gV1RGTW92ZShzY3JpcHRXb3JsZCk7CiAK
ICAgICBBU1NFUlQoIXNjcmlwdFdvcmxkcygpLmNvbnRhaW5zKHdvcmxkLT5wcml2LT5zY3JpcHRX
b3JsZC5nZXQoKSkpOwogICAgIHNjcmlwdFdvcmxkcygpLmFkZCh3b3JsZC0+cHJpdi0+c2NyaXB0
V29ybGQuZ2V0KCksIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCmluZGV4IDJhOGYxN2E0
YWNmODZiMjc3OTJkYmRlMzdkNzNmYjA1YjViNjA3NjYuLmUwMTFmNjJlMDNmY2JhNzMwZGU0MTc3
NTg2OTYzNTAzYWQwMzNjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcApAQCAtNDIsMTQgKzQy
LDE0IEBAIHN0YXRpYyBET01IYW5kbGVDYWNoZSYgZG9tSGFuZGxlQ2FjaGUoKQogICAgIHJldHVy
biBjYWNoZTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRp
b25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JD
cmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsYXJhdGlvbikKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVEZWNsYXJhdGlvbikKIHsKICAgICBpZiAoIXN0eWxlRGVjbGFyYXRpb24pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBk
b21IYW5kbGVDYWNoZSgpLmFkZChzdHlsZURlY2xhcmF0aW9uLCBudWxscHRyKTsKICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGF1dG8gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5o
CmluZGV4IDg0YzkzYzFlZDc0NGFjODY3YjMzOGU2ZjU0NDAwZmRmMTk5YjNjZjEuLjk1ZDkyMGNh
YmMyOGM3ZjU5NDk5N2VkOTYyNjViNTlkZTM4MjE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5oCkBA
IC0yNyw4ICsyNyw4IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlv
bkhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNTU1N0
eWxlRGVjbGFyYXRpb25IYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
PiBnZXRPckNyZWF0ZShXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IGdldE9yQ3Jl
YXRlKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggMWEzNGE5MTQ0
YzdlMjg3MmYwM2Q4OWU4YzZmOWU4MThhYjdkYzY5ZC4uNmQyNjRiMTBlNjY0OTQ2YTViMzgyZDJk
N2MxZGRmMzk4ZGY3OTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAKQEAgLTU3LDI3ICs1NywyNyBAQCBzdGF0aWMgRE9NSGFuZGxlQ2FjaGUm
IGRvbUhhbmRsZUNhY2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLVBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JD
cmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkKK1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAg
IFJhbmdlKiByYW5nZSA9IEpTUmFuZ2U6OnRvV3JhcHBlZCh0b0pTKGNvbnRleHQpLT52bSgpLCB0
b0pTKG9iamVjdCkpOwogICAgIHJldHVybiBnZXRPckNyZWF0ZShyYW5nZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUoUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbmdlKiByYW5n
ZSkKIHsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhh
bmRsZUNhY2hlKCkuYWRkKHJhbmdlLCBudWxscHRyKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAKLSAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6Y3JlYXRlKCpyYW5nZSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHJhbmdlSGFuZGxlLnB0cigpOwogICAgIHJldHVybiBXVEZNb3ZlKHJhbmdlSGFuZGxlKTsK
IH0KIAotUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCitSZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJhbmdlJiByYW5nZSkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKHJhbmdlKSk7
CiB9CkBAIC05Miw3ICs5Miw3IEBAIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6On5JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlKCkKICAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZShtX3Jhbmdl
LmdldCgpKTsKIH0KIAotUmFuZ2UqIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5n
ZSgpIGNvbnN0CitSYW5nZSYgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y29yZVJhbmdlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9yYW5nZS5nZXQoKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBA
QCBXZWJDb3JlOjpJbnRSZWN0IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmJvdW5kaW5nUmVj
dEluV2luZG93Q29vcmRpbmF0ZXMoKSBjbwogICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5jb250
ZW50c1RvV2luZG93KGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Uo
U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAg
ICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCk7CiAg
ICAgRnJhbWUqIGZyYW1lID0gb3duZXJEb2N1bWVudC5mcmFtZSgpOwpAQCAtMTIzLDcgKzEyMyw3
IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZy
YW1lKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbigqbV9yYW5nZSkpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtX3JhbmdlKSk7CiAKICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9y
KSA/IDEgOiBmcmFtZS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIEludFJlY3Qg
cGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JhbmdlLT5hYnNvbHV0ZUJvdW5kaW5nUmVj
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAppbmRl
eCA2NDdiMWMyNDRhOTM2ZDNlN2MwOTNmZDVkN2JhNDQwMjQ0M2VhNjE3Li5mODBlMzNhYmU4MDY1
MWQ5NzkxOGI4ZGJmYTE0OWU0NjFmNTZiYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSW1hZ2VP
cHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsMjQgKzQ1LDI0IEBAIGNs
YXNzIFdlYkltYWdlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUmFuZ2VIYW5kbGU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PiBnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpS
YW5nZSopOworICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZ2V0
T3JDcmVhdGUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZik7CisgICAgc3RhdGljIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOwog
CiAgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZSgpOwogCiAgICAgUmVmPElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZG9jdW1lbnQoKTsKIAogICAgIFdlYkNvcmU6OkludFJl
Y3QgYm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0OwotICAgIFBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKKyAgICBSZWZQdHI8
V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKICAgICBTdHJpbmcgdGV4
dCgpIGNvbnN0OwogCi0gICAgV2ViQ29yZTo6UmFuZ2UqIGNvcmVSYW5nZSgpIGNvbnN0OworICAg
IFdlYkNvcmU6OlJhbmdlJiBjb3JlUmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGF0
aWMgUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSop
OwotICAgIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UqKTsKKyAgICBz
dGF0aWMgUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5n
ZSYpOworICAgIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UmKTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gbV9yYW5nZTsKKyAgICBSZWY8V2ViQ29yZTo6UmFu
Z2U+IG1fcmFuZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggOTJiNmZkYjFmYTY5OTM5ZWY5ZWU1N2IzOTJmNWUzZTY3ODAwMDNmNi4uNjFk
OWNjMDdjOGU4OTBhOTMwOTgxZmM3YTg0NDk0MzNiNDExOGU1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpj
cmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQVBJ
OjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+
IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAg
ICAgYXV0byBidW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlKHBhcmFtZXRlcnMp
KTsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlOjp3ZWJOb3Rp
ZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzCiB9CiAKIC8v
IEZJWE1FIEdldCByaWQgb2YgdGhpcyBmdW5jdGlvbiBhbmQgbW92ZSBpdCBpbnRvIFdLQnVuZGxl
LmNwcC4KLVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0
YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCitS
ZWY8QVBJOjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7CiAgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZSA9IHRvSlMoY29udGV4dCk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IGFycmF5RGF0YSA9IFdlYkNvcmU6OnRvVW5zaGFyZWRVaW50OEFycmF5KGV4ZWNTdGF0ZS0+dm0o
KSwgdG9KUyhleGVjU3RhdGUsIGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAwMDA1NTBi
ZmYyNDFjYzA1ZDY1NGNlOGYxMTY5ZGUyYTcyYzYzMWEwLi44ZjMzN2NjOWYzMGJiYzhkYzcwMTY4
NDQ4MWM5NWYyODE1OWE4YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlw
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzUsNyAr
NzUsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
dW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4g
Y3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCog
aW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZT4gY3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVj
dCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CiAKICAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKIApA
QCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93
ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFn
ZSopOwogICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1
ZVJlZik7Ci0gICAgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhB
cnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0
ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAgICAg
Ly8gVXNlckNvbnRlbnQgQVBJCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFBy
b3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBTdHJpbmcmIHVybCwgQVBJOjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFj
a2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5jcHAKaW5kZXggZTg3OTA1YmNhMmMzZDk2ZGJjOWY5MTI1ZGVlZWI2MDg3ZGQ4
Mzg2Yi4uM2YyNjA4NGIxZTRlN2JiNWFjMDllMDYxMmMwZTdkNTdlZmVhNGI3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTM2LDEzICsz
NiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAorUmVmUHRy
PEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFn
ZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFBhZ2Uq
IHBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKHBhZ2UtPmJhY2tGb3J3YXJkKCkuaXRlbUF0SW5k
ZXgoaW5kZXgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oCmluZGV4IGE0NGQwYjk2MjAwYjAyMzFlNmI5ZWE3MTFkYzA4YmJhMjQ1NzE2MGMuLjll
ZGFmYWFjN2VmOTc4Mjc3ODQ3ZWFlZDdjODAwMDk5MDgxODVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZp
bmUgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MiwxMSArNDIsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdChw
YWdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBkZXRhY2goKSB7IG1fcGFnZSA9IDA7IH0KKyAgICB2
b2lkIGRldGFjaCgpIHsgbV9wYWdlID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBjbGVhcigpOwog
Ci0gICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW1B
dEluZGV4KGludCkgY29uc3Q7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBjb25zdDsKICAgICBpbnQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OwogICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDQyODI3ZjZm
NGZlZWUxNTQ3ZTliNmQ4ZGU1NjAzMTRkMWM1M2QxYmQuLjE1ZTZhNTcxYjY1ZWZkNDMxNWRlOWVj
ODliMTM1YjdmZDJkOTA0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMzksMTEgKzM5LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0
ZW0pCisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYgaXRlbSkKICAgICB7CiAgICAg
ICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbShpdGVtKSk7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShpdGVtKSkpOwogICAgIH0KIAog
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdl
dCgpOyB9CkBAIC02MCw3ICs2MCw5IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpBcnJheT4gY2hp
bGRyZW4oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkgOiBtX2l0ZW0o
aXRlbSkgeyB9CisgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
KFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiBpdGVtKQorICAgICAgICA6IG1faXRlbShX
VEZNb3ZlKGl0ZW0pKQorICAgIHsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVt
PiBtX2l0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDgyNmQzNzIxOWJiMDZhODY3ZTZmYjE3NDU0OGM3YzA4ZTA3MzBmNTUuLjhkMDg3
ZDNjYzRjOWYyYWNhMTA1NmQzYzZiOWJlN2IwNzYyNTg3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBSZWY8SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNy
ZWF0ZShjb25zdCBIaXRUZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6Om5vZGVIYW5kbGUo
KSBjb25zdAorUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0Ojpub2RlSGFuZGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShtX2hpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCkpOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKCkgY29uc3QKK1JlZjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6dXJsRWxl
bWVudEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUobV9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaAppbmRleCAyNTgyYjQ3ZGRmOTlhNzdm
ODZkODRlNDgxZmM3YjRmMDUxZDkwMjcyLi5jZmM5MDRlZDk0MWRmOTg3N2U4ODJlNzE3ZTIyYzgw
ZDZlNjM1YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRN
ZWRpYVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQmIGNvcmVIaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0
OyB9CiAKLSAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxF
bGVtZW50SGFuZGxlKCkgY29uc3Q7CisgICAgUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4g
bm9kZUhhbmRsZSgpIGNvbnN0OworICAgIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IHVy
bEVsZW1lbnRIYW5kbGUoKSBjb25zdDsKICAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKICAg
ICBXZWJGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDM1NjlmZDg3NWJlODZjOTU4NmYw
ZWU3YjI1MDAxM2M5N2MzYzUzZGUuLjc2ZDUwNjhmNTkyNzk5YmIyMDUyYmI4ZGRiYWUyMDE2NWVh
ODgxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTk3LDEyICs5NywxMiBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5
cGUgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpzeW50aGV0aWNDbGljawogICAgIHJl
dHVybiBzeW50aGV0aWNDbGlja1R5cGVGb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnRGb3JOYXZpZ2F0
aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKIH0KIAotUmVmPEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCitSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
PiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uKGZyYW1lLCBhY3Rpb24sIGZvcm1TdGF0ZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9uLCBXVEZN
b3ZlKGZvcm1TdGF0ZSkpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9y
bVN0YXRlKQorSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBu
YXZpZ2F0aW9uQWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKICAgICA6IG1f
bmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbi50eXBlKCkpCiAgICAgLCBtX21vZGlmaWVy
cyhtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKQogICAgICwg
bV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGIzNzY2ZTMyNjFhMDBlODE1YTll
NjM1NmUyOWFlYjE1MmFhODYxYmIuLmZhNmEyYTU0OGI3NmRmNzBhYzQ1NmZiYjE2YTRmNzcwMDQy
MjE4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOworICAgIHN0
YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUoV2ViRnJhbWUq
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmUHRyPFdlYkNvcmU6OkZvcm1T
dGF0ZT4mJik7CiAKICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBz
dGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBBdG9taWNTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVy
biBtX2Rvd25sb2FkQXR0cmlidXRlOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIFJlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYpOwogCiAgICAgV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGUgbV9uYXZpZ2F0aW9uVHlwZTsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1fbW9k
aWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXgg
OWUxMWE3NjI4ODFjMDA2NmFkYmFkODVhMGJkN2Y2NzMyNjUyMTcyOS4uNWI2YmMwYzM0OTY1MzJi
NTljZjFkMDQ2Yzk0MGJlOTk3ODZhNzkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChTY3Jp
cHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgpLCBuYW1lKSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JD
cmVhdGUoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK1JlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZShET01XcmFwcGVyV29y
bGQmIHdvcmxkKQogewogICAgIGlmICgmd29ybGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgp
KQogICAgICAgICByZXR1cm4gbm9ybWFsV29ybGQoKTsKQEAgLTY5LDEyICs2OSwxMiBAQCBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ6OmdldE9yQ3JlYXRlKERPTQogICAgIGlmIChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBl
eGlzdGluZ1dvcmxkID0gYWxsV29ybGRzKCkuZ2V0KCZ3b3JsZCkpCiAgICAgICAgIHJldHVybiBl
eGlzdGluZ1dvcmxkOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKHdvcmxkLCB1bmlxdWVXb3JsZE5hbWUoKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQsIHVuaXF1ZVdvcmxkTmFtZSgp
KSk7CiB9CiAKLUluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6Om5vcm1hbFdvcmxkKCkKK0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkKIHsKLSAgICBzdGF0aWMgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCogd29ybGQgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgU3RyaW5nKCkpKS5sZWFrUmVmKCk7Cisg
ICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkID0gYWRvcHRSZWYoKm5l
dyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBTdHJp
bmcoKSkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gd29ybGQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKaW5kZXggZmU3OTZmNmU4NTNjM2I4YmRjZWRkNTMyYTQ4
ZTI2ODM5ODY0OGVjYi4uNTA5MmFlNzI1NzZlY2ExODZiMmI1NDg2YmRmNWYxNmRhOTY3OTUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKQEAgLTI3LDcgKzI3LDcg
QEAKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZF9oCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmQKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGNyZWF0ZSgpOwogICAg
IHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGdl
dE9yQ3JlYXRlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpOwotICAgIHN0YXRpYyBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKiBub3JtYWxXb3JsZCgpOworICAgIHN0YXRpYyBSZWY8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
Jik7CisgICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIG5vcm1hbFdvcmxkKCk7
CiAKICAgICB2aXJ0dWFsIH5JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uY3BwCmluZGV4IDE3ZDM1Yzk0YTA5MWM4MTY3YzVlN2M3ZmY3MzQ1OGRkOWI3
NTE3Y2IuLmE0ZDdmMWE5MGNjOTAyOTFhNzcxMDlkMTY4MWZlMjRiYjMzMjA1YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogLy8gVGhlIHBsdWctaW4gdGhhdCB3ZSdyZSBjdXJyZW50bHkgY2FsbGluZyBOUFBfTmV3IGZv
ci4KIHN0YXRpYyBOZXRzY2FwZVBsdWdpbiogY3VycmVudE5QUE5ld1BsdWdpbjsKIAotUmVmUHRy
PE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdpbjo6Y3JlYXRlKFBhc3NSZWZQdHI8TmV0c2Nh
cGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSkKK1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gTmV0
c2NhcGVQbHVnaW46OmNyZWF0ZShSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYgcGx1Z2lu
TW9kdWxlKQogewogICAgIGlmICghcGx1Z2luTW9kdWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luKHBsdWdpbk1vZHVs
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luKHBsdWdpbk1vZHVs
ZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiB9CiAgICAgCi1OZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQ
bHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQorTmV0
c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4mJiBw
bHVnaW5Nb2R1bGUpCiAgICAgOiBQbHVnaW4oTmV0c2NhcGVQbHVnaW5UeXBlKQogICAgICwgbV9u
ZXh0UmVxdWVzdElEKDApCi0gICAgLCBtX3BsdWdpbk1vZHVsZShwbHVnaW5Nb2R1bGUpCisgICAg
LCBtX3BsdWdpbk1vZHVsZShXVEZNb3ZlKHBsdWdpbk1vZHVsZSkpCiAgICAgLCBtX25wV2luZG93
KCkKICAgICAsIG1faXNTdGFydGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTEw
Miw3ICsxMTAyLDcgQEAgU2Nyb2xsYmFyKiBOZXRzY2FwZVBsdWdpbjo6dmVydGljYWxTY3JvbGxi
YXIoKQogYm9vbCBOZXRzY2FwZVBsdWdpbjo6c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdAog
ewogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZSAmJiBtX3Bs
dWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpTdXBwb3J0
c1NuYXBzaG90dGluZyk7CisgICAgcmV0dXJuIG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3Mo
KS5jb250YWlucyhQbHVnaW5RdWlya3M6OlN1cHBvcnRzU25hcHNob3R0aW5nKTsKICNlbmRpZgog
ICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggNzgyMjdmNWY5
NGY0YWM3NGRhMDU1NjBlYjQ2NDI3NmU0MzFkYTRhOS4uMDdjOGIwODZhYjg5ZWQ5N2FmNDQyMjQ5
ZjhhNzgxMmZjZmNiOWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgTmV0c2NhcGVQbHVnaW5Vbml4OwogCiBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1
YmxpYyBQbHVnaW4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+
IGNyZWF0ZShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPik7CisgICAgc3RhdGljIFJl
ZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFJlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4m
Jik7CiAgICAgdmlydHVhbCB+TmV0c2NhcGVQbHVnaW4oKTsKIAogICAgIHN0YXRpYyBSZWZQdHI8
TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXRzY2FwZVBsdWdp
bihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpOworICAgIGV4
cGxpY2l0IE5ldHNjYXBlUGx1Z2luKFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4mJik7CiAKICAg
ICB2b2lkIGNhbGxTZXRXaW5kb3coKTsKICAgICB2b2lkIGNhbGxTZXRXaW5kb3dJbnZpc2libGUo
KTsKQEAgLTI4Niw3ICsyODYsNyBAQCBwcml2YXRlOgogICAgIFN0cmVhbXNNYXAgbV9zdHJlYW1z
OwogICAgIEhhc2hNYXA8dm9pZCosIHN0ZDo6cGFpcjxSZWZQdHI8TmV0c2NhcGVQbHVnaW5TdHJl
YW0+LCBTdHJpbmc+PiBtX3JlZGlyZWN0czsKIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbk1v
ZHVsZT4gbV9wbHVnaW5Nb2R1bGU7CisgICAgUmVmPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBtX3Bs
dWdpbk1vZHVsZTsKICAgICBOUFBfdCBtX25wcDsKICAgICBOUFdpbmRvdyBtX25wV2luZG93Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5oCmluZGV4IGY2MzM5NzAxZTY2MDEwOWUyOTFhOGZjMGM1Yjkx
YTQ5ODlhMzRlYmUuLmFmZGExNzExM2E2NTczYjQwZjVlNDJkZGQwMzI0MmQ5ZWFkZDVmYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
QW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBERlBsdWdpbjsK
IAogY2xhc3MgUERGUGx1Z2luQW5ub3RhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBERlBsdWdp
bkFubm90YXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5B
bm5vdGF0aW9uPiBjcmVhdGUoUERGQW5ub3RhdGlvbiAqLCBQREZMYXllckNvbnRyb2xsZXIgKiwg
UERGUGx1Z2luKik7CisgICAgc3RhdGljIFJlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBjcmVh
dGUoUERGQW5ub3RhdGlvbiAqLCBQREZMYXllckNvbnRyb2xsZXIgKiwgUERGUGx1Z2luKik7CiAg
ICAgdmlydHVhbCB+UERGUGx1Z2luQW5ub3RhdGlvbigpOwogCiAgICAgV2ViQ29yZTo6RWxlbWVu
dCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQpAQCAtNzUsNyAr
NzUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6
OkV2ZW50Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVs
ZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgPSAwOworICAgIHZpcnR1YWwgUmVmPFdl
YkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgPSAwOwogCiAgICAgY2xh
c3MgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZl
bnRMaXN0ZW5lciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCmluZGV4IDQy
MmJkYWM0OWI0Zjg4MWNhZmEyODM1YjcxNjJiZGU4YjYxYjliMWMuLjc0ZGNiYzgzNzkxNGM0Mzc3
MmRhYWQ3NTljZTFhZmJkNzcwNjliYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KQEAgLTUy
LDE0ICs1MiwxNCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAotUGFzc1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBQREZQbHVnaW5Bbm5vdGF0
aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVy
ICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQorUmVmUHRyPFBERlBsdWdp
bkFubm90YXRpb24+IFBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9uICph
bm5vdGF0aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1
Z2luKiBwbHVnaW4pCiB7CiAgICAgaWYgKFthbm5vdGF0aW9uIGlzS2luZE9mQ2xhc3M6cGRmQW5u
b3RhdGlvblRleHRXaWRnZXRDbGFzcygpXSkKICAgICAgICAgcmV0dXJuIFBERlBsdWdpblRleHRB
bm5vdGF0aW9uOjpjcmVhdGUoYW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4p
OwogICAgIGlmIChbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRpb25DaG9pY2VX
aWRnZXRDbGFzcygpXSkKICAgICAgICAgcmV0dXJuIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246
OmNyZWF0ZShhbm5vdGF0aW9uLCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbik7CiAKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBQREZQbHVnaW5Bbm5vdGF0
aW9uOjphdHRhY2goRWxlbWVudCogcGFyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRp
b24uaAppbmRleCA2YWY4N2NkN2Y5MmI2ODBmMTJlNDI3ODAzYzg2NjJlYzVlZTJiYjk0Li4wZjc2
NzVjNWQyMzFkNTdkOTJiZDYyNzkzNmU5ZTAyNGQyZTFjNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVt
ZW50KCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCkgb3ZlcnJpZGU7CiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQppbmRleCAyNzM1MDMyNTJmMDA2
OGZiYWZkZGRiZjNmZDllZTIyNGI2ZjZjZjVjLi5kYmU1YWU5NzUxZmVkYzhjOGRmMjIxMzBmNGJh
ZTNhMDM5MWRiZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCkBAIC02
Niw3ICs2Niw3IEBAIHZvaWQgUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KCkKICAg
ICBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjb21taXQoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50
PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitS
ZWY8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVs
ZW1lbnQoKQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHBhcmVudCgpLT5kb2N1bWVudCgp
OwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTc0LDEzICs3NCwxMyBAQCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCkKICAgICBQREZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0ICpjaG9pY2VBbm5vdGF0
aW9uID0gdGhpcy0+Y2hvaWNlQW5ub3RhdGlvbigpOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAogCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KHNlbGVjdFRhZywgZmFsc2UpOworICAgIGF1dG8gZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoc2VsZWN0VGFnLCBmYWxzZSk7CiAKLSAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOworICAg
IGF1dG8mIHN0eWxlZEVsZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihlbGVtZW50Lmdl
dCgpKTsKIAogICAgIC8vIEZJWE1FOiBNYXRjaCBmb250IHdlaWdodCBhbmQgc3R5bGUgYXMgd2Vs
bD8KLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Q29sb3IsIGNvbG9yRnJvbU5TQ29sb3IoY2hvaWNlQW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlh
bGl6ZWQoKSk7Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRGYW1pbHksIGNob2ljZUFubm90YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKKyAg
ICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwg
Y29sb3JGcm9tTlNDb2xvcihjaG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgp
KTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250RmFtaWx5LCBjaG9pY2VBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CiAKICAgICBOU0Fy
cmF5ICpjaG9pY2VzID0gY2hvaWNlQW5ub3RhdGlvbi5jaG9pY2VzOwogICAgIE5TU3RyaW5nICpz
ZWxlY3RlZENob2ljZSA9IGNob2ljZUFubm90YXRpb24uc3RyaW5nVmFsdWU7CkBAIC05Myw3ICs5
Myw3IEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3Jl
YXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgICAgICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hv
aWNlKQogICAgICAgICAgICAgY2hvaWNlT3B0aW9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHNlbGVjdGVkQXR0ciwgQXRvbWljU3RyaW5nKCJzZWxlY3RlZCIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIAotICAgICAgICBzdHlsZWRFbGVtZW50LT5h
cHBlbmRDaGlsZChjaG9pY2VPcHRpb24pOworICAgICAgICBzdHlsZWRFbGVtZW50LmFwcGVuZENo
aWxkKGNob2ljZU9wdGlvbik7CiAgICAgfQogCiAgICAgcmV0dXJuIGVsZW1lbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3
b3JkRmllbGQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luUGFzc3dvcmRGaWVsZC5oCmluZGV4IDE2MzI1MGFkYmM1ODA1OGVkM2IwNmZiNWIwOTViMDYx
NGExZmUyODAuLjM2ZTJlODJiM2IyODBhOGY2MWJhYTdjNTI3NWI5ZGE3NDczOGI0YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFz
c3dvcmRGaWVsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luUGFzc3dvcmRGaWVsZC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3Rh
dGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRl
QW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFuZGxlRXZlbnQoV2Vi
Q29yZTo6RXZlbnQqKSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0K
aW5kZXggMGE5MDcwNzY0Njc2MGE5ZDNiZWQ4Njc2MTNhMWZjNjEzY2MwODQ2ZC4uNjc3ODQ4OWQ4
YzAxYzZlMjM3Y2U1ZDY0ZjVjNzIxOWE0MjkwMzhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRG
aWVsZC5tbQpAQCAtNTMsOSArNTMsOSBAQCBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1
Z2luUGFzc3dvcmRGaWVsZCgpCiAgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKLVBh
c3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlv
bkVsZW1lbnQoKQorUmVmPEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFu
bm90YXRpb25FbGVtZW50KCkKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IFBERlBs
dWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOworICAgIGF1dG8g
ZWxlbWVudCA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7CiAg
ICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2
ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5oCmluZGV4IGE4ZTYyZTljYzUxNjU4YWJlNTU1OGY5YzBkNzJmOGMwMWNl
ZDllMTguLjBjYWU2ZjAwZmVlNzAxMTg3YzI0NzRhOGU3ZTIxOGExYzJhMjc1OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFu
bm90YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpblRleHRBbm5vdGF0aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAg
IHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0
ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBiY2Y5YzU1
ZWEyMzMzMzAyNTZlNjE5ZTVlZTViZGFkYjc2NzEyZTNkLi43ZGFkYTA0YzUwOTZmN2FhNjRhOGRm
ZTI4NzVjMTQ4NzIwY2JjZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAg
LTc5LDcgKzc5LDcgQEAgUERGUGx1Z2luVGV4dEFubm90YXRpb246On5QREZQbHVnaW5UZXh0QW5u
b3RhdGlvbigpCiAgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0
cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1l
bnQoKQorUmVmPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0
aW9uRWxlbWVudCgpCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CiAKQEAgLTkwLDI3
ICs5MCwyMyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAg
ICAgYm9vbCBpc011bHRpbGluZSA9IHRleHRBbm5vdGF0aW9uLmlzTXVsdGlsaW5lOwogCi0gICAg
aWYgKGlzTXVsdGlsaW5lKQotICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCh0ZXh0YXJlYVRhZywgZmFsc2UpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNlKTsKLQorICAgIGF1dG8gZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXNNdWx0aWxpbmUgPyB0ZXh0YXJlYVRhZyA6IGlucHV0
VGFnLCBmYWxzZSkKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5r
ZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIAotICAgIFN0eWxlZEVsZW1l
bnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudC5n
ZXQoKSk7CisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQm
PihlbGVtZW50LmdldCgpKTsKIAogICAgIGlmICghdGV4dEFubm90YXRpb24pCiAgICAgICAgIHJl
dHVybiBlbGVtZW50OwogCiAgICAgLy8gRklYTUU6IE1hdGNoIGZvbnQgd2VpZ2h0IGFuZCBzdHls
ZSBhcyB3ZWxsPwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcih0ZXh0QW5ub3RhdGlvbi5mb250Q29sb3Ip
LnNlcmlhbGl6ZWQoKSk7Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIHRleHRBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7
Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRl
eHRBbGlnbiwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQodGV4dEFubm90YXRp
b24uYWxpZ25tZW50KSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5
KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yRnJvbU5TQ29sb3IodGV4dEFubm90YXRpb24uZm9udENv
bG9yKS5zZXJpYWxpemVkKCkpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIHRleHRBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFt
ZSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dEFsaWduLCBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudCh0ZXh0QW5ub3Rh
dGlvbi5hbGlnbm1lbnQpKTsKIAogICAgIGlmIChpc011bHRpbGluZSkKLSAgICAgICAgZG93bmNh
c3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oc3R5bGVkRWxlbWVudCktPnNldFZhbHVlKHRleHRBbm5v
dGF0aW9uLnN0cmluZ1ZhbHVlKTsKKyAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dD4oc3R5bGVkRWxlbWVudCkuc2V0VmFsdWUodGV4dEFubm90YXRpb24uc3RyaW5nVmFsdWUpOwog
ICAgIGVsc2UKLSAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc3R5bGVkRWxlbWVu
dCktPnNldFZhbHVlKHRleHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlKTsKKyAgICAgICAgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oc3R5bGVkRWxlbWVudCkuc2V0VmFsdWUodGV4dEFubm90YXRp
b24uc3RyaW5nVmFsdWUpOwogCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggODQ2ZThiZGZiZTkzZDE2YTI4MWJiZjJhYWMzYzEx
Yjc2Y2QzMjFiNy4uMWM4NmE4MDA2ZGJlMmFhYzQ3NTA4ZmE3YTc0ODA5MDdjNjNjNTRiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZD4sIHVuc2lnbmVkPgogCiBzdGF0aWMgV29ybGRNYXAmIHdvcmxkTWFwKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V29ybGRNYXA+IG1hcChzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8V29ybGRNYXA6OktleVZhbHVlUGFpclR5cGU+IHsgeyAxLCBzdGQ6Om1ha2VfcGFpcihJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAxKSB9IH0pOworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3Js
ZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4geyB7IDEsIHN0ZDo6bWFrZV9wYWlyKCZJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAxKSB9IH0pOwogCiAgICAgcmV0dXJuIG1h
cDsKIH0KQEAgLTIwOCw5ICsyMDgsOSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mCiAjaWYgRU5B
QkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRl
c2NyaXB0b3JQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVc2VyTWVzc2FnZUhhbmRs
ZXJEZXNjcmlwdG9yUHJveHk+IGNyZWF0ZShXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqIGNvbnRy
b2xsZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29y
bGQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yUHJveHk+IGNyZWF0ZShXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYg
d29ybGQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShjb250cm9sbGVyLCBu
YW1lLCB3b3JsZCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkoY29udHJvbGxlciwgbmFtZSwgd29y
bGQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5XZWJVc2VyTWVzc2FnZUhh
bmRsZXJEZXNjcmlwdG9yUHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5k
ZXggNWY0NTY1NGVmN2I0MDI4NmJiZGVhYjU4ZjJlMmUyYzA4OTk2OWVlNy4uYjQ2ZTlhYTA2OTc1
YWFiMjk1MjIxYWViODkyODE4YmU4NjAwOTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCkBAIC01OSw3ICs1OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZl
cnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFt
ZSYgZnJhbWUpCitzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9C
aXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkK
IHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzID0gU2hhcmVhYmxlQml0bWFwOjpT
dXBwb3J0c0FscGhhOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggMGUxMTc4MjU0OTM0YWE1MGQ0OGUyZjdhZjM0NTViMmMzNTJlNGIzMS4uOGZlMzAyYTlmZmUz
MDU2YmMxNWQzMTI4ZTJkMDFjN2I0ZTUzOTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTc5MywxNCArNTc5MywxNCBAQCB2b2lkIFdl
YlBhZ2U6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJD
b250ZW50SW5qZWN0ZWRGcgogewogICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdHsg
c291cmNlLCBXZWJDb3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3Ry
aW5nPigpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCi0gICAgbV91c2VyQ29u
dGVudENvbnRyb2xsZXItPmFkZFVzZXJTY3JpcHQoKkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOworICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1h
bFdvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFVz
ZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNo
ZWV0IHVzZXJTdHlsZVNoZWV0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3RvcjxT
dHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2Vy
TGV2ZWwgfTsKIAotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVl
dCgqSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2Vy
U3R5bGVTaGVldCkpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVT
aGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVz
ZXJTdHlsZVNoZWV0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVtb3ZlQWxsVXNlckNvbnRlbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCAxYTVlMTAyZWM2MzQ5Mzk1NmUyMDZm
N2U2YjM1YzM1ZGJmNDM3ZDU0Li5jOGM5M2IyYjkwNTg3ZGMwNjk2ZmM1ZGE2YmFjNDQwMjNhMzc1
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHN0
cnVjdCBQcmludFBhZ2VzRGF0YSB7CiAgICAgYm9vbCBpc1ZhbGlkIDogMTsKIH07CiAKLVBhc3NS
ZWZQdHI8V2ViUHJpbnRPcGVyYXRpb25HdGs+IFdlYlByaW50T3BlcmF0aW9uR3RrOjpjcmVhdGUo
V2ViUGFnZSogcGFnZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCitSZWZQdHI8V2ViUHJp
bnRPcGVyYXRpb25HdGs+IFdlYlByaW50T3BlcmF0aW9uR3RrOjpjcmVhdGUoV2ViUGFnZSogcGFn
ZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiB7CiAjaWYgSEFWRShHVEtfVU5JWF9QUklO
VElORykKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByaW50T3BlcmF0aW9uR3RrVW5peChw
YWdlLCBwcmludEluZm8pKTsKQEAgLTM4OCw3ICszODgsNyBAQCBQYXNzUmVmUHRyPFdlYlByaW50
T3BlcmF0aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2Us
IGNvbgogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHBy
aW50SW5mbyk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCmluZGV4IGY1ZmVjMTA2Y2EyNzk0YjU2NzU2MTg1M2Zh
ODMxMTQ2MTkwNTFjNDQuLjc0M2NjMmNlNTI1ODk3ZDE5MDdiODJlYmZiMjQxMjNkODIyMzA0OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUg
IlByaW50SW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogdHlwZWRl
ZiBzdHJ1Y3QgX0d0a1ByaW50U2V0dGluZ3MgR3RrUHJpbnRTZXR0aW5nczsKQEAgLTQ4LDcgKzQ4
LDcgQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUHJpbnRPcGVyYXRpb25HdGsgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJQcmludE9wZXJhdGlvbkd0az4gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBjcmVhdGUoV2ViUGFnZSosIGNvbnN0
IFByaW50SW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJpbnRPcGVyYXRpb25HdGs+IGNy
ZWF0ZShXZWJQYWdlKiwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdmlydHVhbCB+V2ViUHJpbnRP
cGVyYXRpb25HdGsoKTsKIAogICAgIFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9wcmludENvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwNWNmMTEwOGJk
MDcwM2I5OGEwNmQyNjcyMzViMDk0Y2IwMTE5NDkxLi45MWI4ZjIzNTAwODEwNmExNTZhMzVjZGFi
MzgwNWI1YTA4YWQ5NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3Jh
bnVsYXJpdHksIHVpbgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNh
bGxiYWNrKHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oZmxhZ3MpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJhbmdl
PiByYW5nZUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBw
b3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCkKK3N0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9y
UG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBi
b29sIGJhc2VJc1N0YXJ0KQogewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIHJlc3VsdCA9IHBvc2l0aW9uOwpAQCAtMTIwMywxMCArMTIwMywxMCBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgcAogICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpm
cmFtZS0+ZG9jdW1lbnQoKSwgcmVzdWx0LCBzZWxlY3Rpb25FbmQpOwogICAgIH0KIAotICAgIHJl
dHVybiByYW5nZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJhbmdlOwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwgU2Vs
ZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRX
b3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24pCiB7CiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBiYXNlSXNTdGFy
dCA/IERpcmVjdGlvbkZvcndhcmQgOiBEaXJlY3Rpb25CYWNrd2FyZDsKICAgICBTZWxlY3Rpb25E
aXJlY3Rpb24gb3Bwb3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlvbkJhY2t3
YXJkIDogRGlyZWN0aW9uRm9yd2FyZDsKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1l
LCBjb25zdCBWaXNpCiAKICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBX
b3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3
b3JkIGJvdW5kYXJ5LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9u
KSkgewpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
QXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2kKICAgICBp
ZiAoZXh0ZW50LmlzTnVsbCgpIHx8IGV4dGVudCA9PSBiYXNlKQogICAgICAgICBleHRlbnQgPSB3
b3JkQm91bmRhcnk7CiAgICAgaWYgKGV4dGVudC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIChiYXNlIDwgZXh0ZW50KSA/
IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQpIDogUmFuZ2U6
OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZS5oCmluZGV4IDYzMzliMjIzMDY2MzhlMDJmMGYwOWYxY2ZlODcy
ZTE1NjNiNzQ5YjUuLjE4N2MxZDgzMWFkYTgwMDM4YmYxNzc3OWQ2YjZiOWNlOGNkYmU5MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCkBAIC0xNjMsOSArMTYzLDkgQEAgcHVi
bGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBLZXlmcmFtZVZhbHVlKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiB2YWx1ZSkKKyAgICAgICAgS2V5ZnJhbWVW
YWx1ZShSZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiYmIHZhbHVlKQogICAgICAgICAg
ICAgOiBrZXlUeXBlKEZpbHRlcktleVR5cGUpCi0gICAgICAgICAgICAsIGZpbHRlcih2YWx1ZSkK
KyAgICAgICAgICAgICwgZmlsdGVyKFdURk1vdmUodmFsdWUpKQogICAgICAgICB7CiAgICAgICAg
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309963</attachid>
            <date>2017-05-12 16:07:38 -0700</date>
            <delta_ts>2017-05-12 16:32:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512160737.patch</filename>
            <type>text/plain</type>
            <size>51867</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggMWFlYzBiOTIyZWUzZWVkOWI0YTIx
ZGQ3NTYyNmE2Zjg1OGM0NjE1Zi4uOGNjNjI4YWMxNzYzZmE1Njk1ZDc0MTA1YzNlNDhlOThlODc4
NGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTQyLDcgKzQyLDcgQEAgKyAoV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKil3b3JsZAogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKW5vcm1hbFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoKkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA5NGFiNGRhNzU4YTBmMzA1ZTZmYzg0YmY2
YjljMjQ2NjQ0MWMwMDllLi5mODI1ZTA5MDViYjA5ZDNjOWQ0YzdjOTA4OWFlOWIwYzBmNmJjNGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VDbGlja01lbnVJdGVtKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0Nv
bnRleHRNZW51SXRlbVJlZiBpdGUKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotc3Rh
dGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBXZWJDb250
ZXh0TWVudSYgY29udGV4dE1lbnUpCitzdGF0aWMgUmVmPEFQSTo6QXJyYXk+IGNvbnRleHRNZW51
SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51KQogewogICAgIGF1dG8gaXRl
bXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcAppbmRleCBiN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0
YWUwLi5iNDA5YzU5ZDZkNTkxMjUyYzlmNzhlMmY2M2I1YjAxMzVlN2U0YWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKQogCiBX
S0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOworICAgIHJldHVybiB0b0FQSSgmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTY3JpcHRXb3JsZENsZWFyV3JhcHBlcnMoV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3Js
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0U2NyaXB0V29ybGQuY3BwCmluZGV4IGRjMDk1ZTBkN2E5MDBiNGQ2ZmM3OWUxNzVjMmM3
ODA5ZjNkZWY2YzEuLjhkNGM5NzhiZTAzNmIwZGIxZWRmY2RmMDU1MjA4MTg3NGVhYTM2MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcApAQCAtOTksMTAgKzk5
LDEwIEBAIHZvaWQgd2Via2l0U2NyaXB0V29ybGRXaW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNj
cmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnCiAgICAgZ19zaWduYWxfZW1pdCh3b3JsZCwg
c2lnbmFsc1tXSU5ET1dfT0JKRUNUX0NMRUFSRURdLCAwLCBwYWdlLCBmcmFtZSk7CiB9CiAKLXN0
YXRpYyBXZWJLaXRTY3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCkKK3N0YXRpYyBXZWJLaXRT
Y3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+JiYgc2NyaXB0V29ybGQpCiB7CiAgICAgV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxk
ID0gV0VCS0lUX1NDUklQVF9XT1JMRChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU0NSSVBUX1dP
UkxELCBOVUxMKSk7Ci0gICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gc2NyaXB0V29ybGQ7
CisgICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gV1RGTW92ZShzY3JpcHRXb3JsZCk7CiAK
ICAgICBBU1NFUlQoIXNjcmlwdFdvcmxkcygpLmNvbnRhaW5zKHdvcmxkLT5wcml2LT5zY3JpcHRX
b3JsZC5nZXQoKSkpOwogICAgIHNjcmlwdFdvcmxkcygpLmFkZCh3b3JsZC0+cHJpdi0+c2NyaXB0
V29ybGQuZ2V0KCksIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCmluZGV4IDJhOGYxN2E0
YWNmODZiMjc3OTJkYmRlMzdkNzNmYjA1YjViNjA3NjYuLmUwMTFmNjJlMDNmY2JhNzMwZGU0MTc3
NTg2OTYzNTAzYWQwMzNjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcApAQCAtNDIsMTQgKzQy
LDE0IEBAIHN0YXRpYyBET01IYW5kbGVDYWNoZSYgZG9tSGFuZGxlQ2FjaGUoKQogICAgIHJldHVy
biBjYWNoZTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRp
b25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JD
cmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsYXJhdGlvbikKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVEZWNsYXJhdGlvbikKIHsKICAgICBpZiAoIXN0eWxlRGVjbGFyYXRpb24pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBk
b21IYW5kbGVDYWNoZSgpLmFkZChzdHlsZURlY2xhcmF0aW9uLCBudWxscHRyKTsKICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGF1dG8gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5o
CmluZGV4IDg0YzkzYzFlZDc0NGFjODY3YjMzOGU2ZjU0NDAwZmRmMTk5YjNjZjEuLjk1ZDkyMGNh
YmMyOGM3ZjU5NDk5N2VkOTYyNjViNTlkZTM4MjE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5oCkBA
IC0yNyw4ICsyNyw4IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlv
bkhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNTU1N0
eWxlRGVjbGFyYXRpb25IYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
PiBnZXRPckNyZWF0ZShXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IGdldE9yQ3Jl
YXRlKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggMWEzNGE5MTQ0
YzdlMjg3MmYwM2Q4OWU4YzZmOWU4MThhYjdkYzY5ZC4uNmQyNjRiMTBlNjY0OTQ2YTViMzgyZDJk
N2MxZGRmMzk4ZGY3OTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAKQEAgLTU3LDI3ICs1NywyNyBAQCBzdGF0aWMgRE9NSGFuZGxlQ2FjaGUm
IGRvbUhhbmRsZUNhY2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLVBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JD
cmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkKK1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAg
IFJhbmdlKiByYW5nZSA9IEpTUmFuZ2U6OnRvV3JhcHBlZCh0b0pTKGNvbnRleHQpLT52bSgpLCB0
b0pTKG9iamVjdCkpOwogICAgIHJldHVybiBnZXRPckNyZWF0ZShyYW5nZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUoUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbmdlKiByYW5n
ZSkKIHsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhh
bmRsZUNhY2hlKCkuYWRkKHJhbmdlLCBudWxscHRyKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAKLSAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6Y3JlYXRlKCpyYW5nZSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHJhbmdlSGFuZGxlLnB0cigpOwogICAgIHJldHVybiBXVEZNb3ZlKHJhbmdlSGFuZGxlKTsK
IH0KIAotUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCitSZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJhbmdlJiByYW5nZSkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKHJhbmdlKSk7
CiB9CkBAIC05Miw3ICs5Miw3IEBAIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6On5JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlKCkKICAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZShtX3Jhbmdl
LmdldCgpKTsKIH0KIAotUmFuZ2UqIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5n
ZSgpIGNvbnN0CitSYW5nZSYgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y29yZVJhbmdlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9yYW5nZS5nZXQoKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBA
QCBXZWJDb3JlOjpJbnRSZWN0IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmJvdW5kaW5nUmVj
dEluV2luZG93Q29vcmRpbmF0ZXMoKSBjbwogICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5jb250
ZW50c1RvV2luZG93KGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Uo
U25hcHNob3RPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAg
ICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCk7CiAg
ICAgRnJhbWUqIGZyYW1lID0gb3duZXJEb2N1bWVudC5mcmFtZSgpOwpAQCAtMTIzLDcgKzEyMyw3
IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZy
YW1lKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbigqbV9yYW5nZSkpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihtX3JhbmdlKSk7CiAKICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9y
KSA/IDEgOiBmcmFtZS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIEludFJlY3Qg
cGFpbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JhbmdlLT5hYnNvbHV0ZUJvdW5kaW5nUmVj
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAppbmRl
eCA2NDdiMWMyNDRhOTM2ZDNlN2MwOTNmZDVkN2JhNDQwMjQ0M2VhNjE3Li5mODBlMzNhYmU4MDY1
MWQ5NzkxOGI4ZGJmYTE0OWU0NjFmNTZiYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSW1hZ2VP
cHRpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsMjQgKzQ1LDI0IEBAIGNs
YXNzIFdlYkltYWdlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUmFuZ2VIYW5kbGU+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PiBnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpS
YW5nZSopOworICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZ2V0
T3JDcmVhdGUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZik7CisgICAgc3RhdGljIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOwog
CiAgICAgdmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZSgpOwogCiAgICAgUmVmPElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gZG9jdW1lbnQoKTsKIAogICAgIFdlYkNvcmU6OkludFJl
Y3QgYm91bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0OwotICAgIFBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKKyAgICBSZWZQdHI8
V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKICAgICBTdHJpbmcgdGV4
dCgpIGNvbnN0OwogCi0gICAgV2ViQ29yZTo6UmFuZ2UqIGNvcmVSYW5nZSgpIGNvbnN0OworICAg
IFdlYkNvcmU6OlJhbmdlJiBjb3JlUmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGF0
aWMgUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSop
OwotICAgIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UqKTsKKyAgICBz
dGF0aWMgUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5n
ZSYpOworICAgIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UmKTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gbV9yYW5nZTsKKyAgICBSZWY8V2ViQ29yZTo6UmFu
Z2U+IG1fcmFuZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggOTJiNmZkYjFmYTY5OTM5ZWY5ZWU1N2IzOTJmNWUzZTY3ODAwMDNmNi4uNjFk
OWNjMDdjOGU4OTBhOTMwOTgxZmM3YTg0NDk0MzNiNDExOGU1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpj
cmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQVBJ
OjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+
IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAg
ICAgYXV0byBidW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlKHBhcmFtZXRlcnMp
KTsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlOjp3ZWJOb3Rp
ZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzCiB9CiAKIC8v
IEZJWE1FIEdldCByaWQgb2YgdGhpcyBmdW5jdGlvbiBhbmQgbW92ZSBpdCBpbnRvIFdLQnVuZGxl
LmNwcC4KLVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0
YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCitS
ZWY8QVBJOjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7CiAgICAgSlNDOjpFeGVj
U3RhdGUqIGV4ZWNTdGF0ZSA9IHRvSlMoY29udGV4dCk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IGFycmF5RGF0YSA9IFdlYkNvcmU6OnRvVW5zaGFyZWRVaW50OEFycmF5KGV4ZWNTdGF0ZS0+dm0o
KSwgdG9KUyhleGVjU3RhdGUsIGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAwMDA1NTBi
ZmYyNDFjYzA1ZDY1NGNlOGYxMTY5ZGUyYTcyYzYzMWEwLi44ZjMzN2NjOWYzMGJiYzhkYzcwMTY4
NDQ4MWM5NWYyODE1OWE4YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW5jbHVkZSAiV0tCdW5kbGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlw
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzUsNyAr
NzUsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
dW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4g
Y3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCog
aW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZT4gY3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVj
dCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7CiAKICAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKIApA
QCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93
ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFn
ZSopOwogICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1
ZVJlZik7Ci0gICAgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhB
cnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0
ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAgICAg
Ly8gVXNlckNvbnRlbnQgQVBJCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFBy
b3h5KiwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBTdHJpbmcmIHVybCwgQVBJOjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFj
a2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5jcHAKaW5kZXggZTg3OTA1YmNhMmMzZDk2ZGJjOWY5MTI1ZGVlZWI2MDg3ZGQ4
Mzg2Yi4uM2YyNjA4NGIxZTRlN2JiNWFjMDllMDYxMmMwZTdkNTdlZmVhNGI3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTM2LDEzICsz
NiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAorUmVmUHRy
PEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFn
ZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFBhZ2Uq
IHBhZ2UgPSBtX3BhZ2UtPmNvcmVQYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKHBhZ2UtPmJhY2tGb3J3YXJkKCkuaXRlbUF0SW5k
ZXgoaW5kZXgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdC5oCmluZGV4IGE0NGQwYjk2MjAwYjAyMzFlNmI5ZWE3MTFkYzA4YmJhMjQ1NzE2MGMuLjll
ZGFmYWFjN2VmOTc4Mjc3ODQ3ZWFlZDdjODAwMDk5MDgxODVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZp
bmUgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC00MiwxMSArNDIsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdChw
YWdlKSk7CiAgICAgfQogCi0gICAgdm9pZCBkZXRhY2goKSB7IG1fcGFnZSA9IDA7IH0KKyAgICB2
b2lkIGRldGFjaCgpIHsgbV9wYWdlID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBjbGVhcigpOwog
Ci0gICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW1B
dEluZGV4KGludCkgY29uc3Q7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBjb25zdDsKICAgICBpbnQgYmFja0xpc3RDb3VudCgp
IGNvbnN0OwogICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDQyODI3ZjZm
NGZlZWUxNTQ3ZTliNmQ4ZGU1NjAzMTRkMWM1M2QxYmQuLjE1ZTZhNTcxYjY1ZWZkNDMxNWRlOWVj
ODliMTM1YjdmZDJkOTA0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMzksMTEgKzM5LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0
ZW0pCisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+
IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYgaXRlbSkKICAgICB7CiAgICAg
ICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbShpdGVtKSk7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShpdGVtKSkpOwogICAgIH0KIAog
ICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdl
dCgpOyB9CkBAIC02MCw3ICs2MCw5IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpBcnJheT4gY2hp
bGRyZW4oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkgOiBtX2l0ZW0o
aXRlbSkgeyB9CisgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
KFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiBpdGVtKQorICAgICAgICA6IG1faXRlbShX
VEZNb3ZlKGl0ZW0pKQorICAgIHsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVt
PiBtX2l0ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDgyNmQzNzIxOWJiMDZhODY3ZTZmYjE3NDU0OGM3YzA4ZTA3MzBmNTUuLjhkMDg3
ZDNjYzRjOWYyYWNhMTA1NmQzYzZiOWJlN2IwNzYyNTg3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBSZWY8SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNy
ZWF0ZShjb25zdCBIaXRUZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdChoaXRUZXN0UmVzdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6Om5vZGVIYW5kbGUo
KSBjb25zdAorUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0Ojpub2RlSGFuZGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZShtX2hpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCkpOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKCkgY29uc3QKK1JlZjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6dXJsRWxl
bWVudEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUobV9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaAppbmRleCAyNTgyYjQ3ZGRmOTlhNzdm
ODZkODRlNDgxZmM3YjRmMDUxZDkwMjcyLi5jZmM5MDRlZDk0MWRmOTg3N2U4ODJlNzE3ZTIyYzgw
ZDZlNjM1YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRN
ZWRpYVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQmIGNvcmVIaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0
OyB9CiAKLSAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxF
bGVtZW50SGFuZGxlKCkgY29uc3Q7CisgICAgUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4g
bm9kZUhhbmRsZSgpIGNvbnN0OworICAgIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IHVy
bEVsZW1lbnRIYW5kbGUoKSBjb25zdDsKICAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKICAg
ICBXZWJGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDM1NjlmZDg3NWJlODZjOTU4NmYw
ZWU3YjI1MDAxM2M5N2MzYzUzZGUuLjc2ZDUwNjhmNTkyNzk5YmIyMDUyYmI4ZGRiYWUyMDE2NWVh
ODgxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTk3LDEyICs5NywxMiBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5
cGUgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpzeW50aGV0aWNDbGljawogICAgIHJl
dHVybiBzeW50aGV0aWNDbGlja1R5cGVGb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnRGb3JOYXZpZ2F0
aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKIH0KIAotUmVmPEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV2Vi
RnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCitSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
PiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3Jt
U3RhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uKGZyYW1lLCBhY3Rpb24sIGZvcm1TdGF0ZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9uLCBXVEZN
b3ZlKGZvcm1TdGF0ZSkpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9y
bVN0YXRlKQorSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBu
YXZpZ2F0aW9uQWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKICAgICA6IG1f
bmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbi50eXBlKCkpCiAgICAgLCBtX21vZGlmaWVy
cyhtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKQogICAgICwg
bV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGIzNzY2ZTMyNjFhMDBlODE1YTll
NjM1NmUyOWFlYjE1MmFhODYxYmIuLmZhNmEyYTU0OGI3NmRmNzBhYzQ1NmZiYjE2YTRmNzcwMDQy
MjE4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
aApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5o
IgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOworICAgIHN0
YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUoV2ViRnJhbWUq
LCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmUHRyPFdlYkNvcmU6OkZvcm1T
dGF0ZT4mJik7CiAKICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBz
dGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CkBAIC02Myw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBBdG9taWNTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVy
biBtX2Rvd25sb2FkQXR0cmlidXRlOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIFJlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYpOwogCiAgICAgV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGUgbV9uYXZpZ2F0aW9uVHlwZTsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1fbW9k
aWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXgg
OWUxMWE3NjI4ODFjMDA2NmFkYmFkODVhMGJkN2Y2NzMyNjUyMTcyOS4uYjE3ODMxZDJjN2E5NDNk
YzRkNmMzNDU1MWQzMmJiMGIyZjQ4NmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQuY3BwCkBAIC02MSwyMCArNjEsMjAgQEAgUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZShjb25zdCBTdHJpbmcm
IG4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCksIG5hbWUpKTsKIH0KIAotUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRP
ckNyZWF0ZShET01XcmFwcGVyV29ybGQmIHdvcmxkKQorUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQpCiB7CiAgICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpCiAgICAgICAgIHJldHVybiBub3JtYWxXb3JsZCgpOwogCiAgICAgaWYgKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQqIGV4aXN0aW5nV29ybGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkK
LSAgICAgICAgcmV0dXJuIGV4aXN0aW5nV29ybGQ7CisgICAgICAgIHJldHVybiAqZXhpc3RpbmdX
b3JsZDsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCh3b3JsZCwgdW5pcXVlV29ybGROYW1lKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkLCB1bmlxdWVXb3JsZE5hbWUoKSkpOwogfQog
Ci1JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpu
b3JtYWxXb3JsZCgpCitJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpCiB7Ci0gICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIHdvcmxkID0gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZygpKSkubGVha1JlZigpOworICAgIHN0YXRp
YyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgU3RyaW5nKCkpKS5s
ZWFrUmVmKCk7CiAgICAgcmV0dXJuIHdvcmxkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZC5oCmluZGV4IGZlNzk2ZjZlODUzYzNiOGJkY2VkZDUzMmE0OGUyNjgzOTg2
NDhlY2IuLjUwOTJhZTcyNTc2ZWNhMTg2YjJiNTQ4NmJkZjVmMTZkYTk2Nzk1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVm
aW5lIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGRfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00MSw4ICs0MSw4IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBjcmVhdGUoKTsKICAgICBzdGF0aWMg
UmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0
ZShXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKLSAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCogbm9ybWFsV29ybGQoKTsKKyAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpOworICAg
IHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiBub3JtYWxXb3JsZCgpOwogCiAgICAg
dmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcAppbmRleCAxN2QzNWM5NGEwOTFjODE2N2M1ZTdjN2ZmNzM0NThkZDliNzUxN2NiLi5h
NGQ3ZjFhOTBjYzkwMjkxYTc3MTA5ZDE2ODFmZTI0YmIzMzIwNWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFRo
ZSBwbHVnLWluIHRoYXQgd2UncmUgY3VycmVudGx5IGNhbGxpbmcgTlBQX05ldyBmb3IuCiBzdGF0
aWMgTmV0c2NhcGVQbHVnaW4qIGN1cnJlbnROUFBOZXdQbHVnaW47CiAKLVJlZlB0cjxOZXRzY2Fw
ZVBsdWdpbj4gTmV0c2NhcGVQbHVnaW46OmNyZWF0ZShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2lu
TW9kdWxlPiBwbHVnaW5Nb2R1bGUpCitSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNjYXBlUGx1
Z2luOjpjcmVhdGUoUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmIHBsdWdpbk1vZHVsZSkK
IHsKICAgICBpZiAoIXBsdWdpbk1vZHVsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbihwbHVnaW5Nb2R1bGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbihwbHVnaW5Nb2R1bGUucmVsZWFz
ZU5vbk51bGwoKSkpOwogfQogICAgIAotTmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKFBh
c3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSkKK05ldHNjYXBlUGx1
Z2luOjpOZXRzY2FwZVBsdWdpbihSZWY8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYgcGx1Z2luTW9k
dWxlKQogICAgIDogUGx1Z2luKE5ldHNjYXBlUGx1Z2luVHlwZSkKICAgICAsIG1fbmV4dFJlcXVl
c3RJRCgwKQotICAgICwgbV9wbHVnaW5Nb2R1bGUocGx1Z2luTW9kdWxlKQorICAgICwgbV9wbHVn
aW5Nb2R1bGUoV1RGTW92ZShwbHVnaW5Nb2R1bGUpKQogICAgICwgbV9ucFdpbmRvdygpCiAgICAg
LCBtX2lzU3RhcnRlZChmYWxzZSkKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExMDIsNyArMTEw
Miw3IEBAIFNjcm9sbGJhciogTmV0c2NhcGVQbHVnaW46OnZlcnRpY2FsU2Nyb2xsYmFyKCkKIGJv
b2wgTmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gbV9wbHVnaW5Nb2R1bGUgJiYgbV9wbHVnaW5Nb2R1
bGUtPnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6U3VwcG9ydHNTbmFwc2hv
dHRpbmcpOworICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFp
bnMoUGx1Z2luUXVpcmtzOjpTdXBwb3J0c1NuYXBzaG90dGluZyk7CiAjZW5kaWYKICAgICByZXR1
cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDc4MjI3ZjVmOTRmNGFjNzRk
YTA1NTYwZWI0NjQyNzZlNDMxZGE0YTkuLjA3YzhiMDg2YWI4OWVkOTdhZjQ0MjI0OWY4YTc4MTJm
Y2ZjYjllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNz
IE5ldHNjYXBlUGx1Z2luVW5peDsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1
Z2luIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVhdGUo
UGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4pOworICAgIHN0YXRpYyBSZWZQdHI8TmV0
c2NhcGVQbHVnaW4+IGNyZWF0ZShSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYpOwogICAg
IHZpcnR1YWwgfk5ldHNjYXBlUGx1Z2luKCk7CiAKICAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBl
UGx1Z2luPiBmcm9tTlBQKE5QUCk7CkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0c2NhcGVQbHVnaW4oUGFzc1Jl
ZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKTsKKyAgICBleHBsaWNpdCBO
ZXRzY2FwZVBsdWdpbihSZWY8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYpOwogCiAgICAgdm9pZCBj
YWxsU2V0V2luZG93KCk7CiAgICAgdm9pZCBjYWxsU2V0V2luZG93SW52aXNpYmxlKCk7CkBAIC0y
ODYsNyArMjg2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJlYW1zTWFwIG1fc3RyZWFtczsKICAgICBI
YXNoTWFwPHZvaWQqLCBzdGQ6OnBhaXI8UmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiwgU3Ry
aW5nPj4gbV9yZWRpcmVjdHM7CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1f
cGx1Z2luTW9kdWxlOworICAgIFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gbV9wbHVnaW5Nb2R1
bGU7CiAgICAgTlBQX3QgbV9ucHA7CiAgICAgTlBXaW5kb3cgbV9ucFdpbmRvdzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5v
dGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24uaAppbmRleCBmNjMzOTcwMWU2NjAxMDllMjkxYThmYzBjNWI5MWE0OTg5YTM0
ZWJlLi5hZmRhMTcxMTNhNjU3M2I0MGY1ZTQyZGRkMDMyNDJkOWVhZGQ1ZmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24uaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBQREZQbHVnaW47CiAKIGNsYXNz
IFBERlBsdWdpbkFubm90YXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQREZQbHVnaW5Bbm5vdGF0
aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlv
bj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdp
biopOworICAgIHN0YXRpYyBSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gY3JlYXRlKFBERkFu
bm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOwogICAgIHZpcnR1
YWwgflBERlBsdWdpbkFubm90YXRpb24oKTsKIAogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KQEAgLTc1LDcgKzc1LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCop
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpF
bGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpID0gMDsKIAogICAgIGNsYXNzIFBERlBs
dWdpbkFubm90YXRpb25FdmVudExpc3RlbmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXIgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA0MjJiZGFjNDli
NGY4ODFjYWZhMjgzNWI3MTYyYmRlOGI2MWI5YjFjLi43NGRjYmM4Mzc5MTRjNDM3NzJkYWFkNzU5
Y2UxYWZiZDc3MDY5YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC01MiwxNCArNTIs
MTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVBhc3NSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gUERGUGx1Z2luQW5ub3RhdGlvbjo6Y3Jl
YXRlKFBERkFubm90YXRpb24gKmFubm90YXRpb24sIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5
ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikKK1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0
aW9uPiBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlv
biwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1
Z2luKQogewogICAgIGlmIChbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRpb25U
ZXh0V2lkZ2V0Q2xhc3MoKV0pCiAgICAgICAgIHJldHVybiBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlKGFubm90YXRpb24sIHBkZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKTsKICAgICBp
ZiAoW2Fubm90YXRpb24gaXNLaW5kT2ZDbGFzczpwZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xh
c3MoKV0pCiAgICAgICAgIHJldHVybiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGUo
YW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pOwogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0
YWNoKEVsZW1lbnQqIHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKaW5k
ZXggNmFmODdjZDdmOTJiNjgwZjEyZTQyNzgwM2M4NjYyZWM1ZWUyYmI5NC4uMGY3Njc1YzVkMjMx
ZDU3ZDkyYmQ2Mjc5MzZlOWUwMjRkMmUxYzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
UGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92
ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpIG92ZXJyaWRlOwogCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggMjczNTAzMjUyZjAwNjhmYmFmZGRk
YmYzZmQ5ZWUyMjRiNmY2Y2Y1Yy4uZGJlNWFlOTc1MWZlZGM4YzhkZjIyMTMwZjRiYWUzYTAzOTFk
YmRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNvbW1pdCgpCiAgICAgUERGUGx1
Z2luQW5ub3RhdGlvbjo6Y29tbWl0KCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQorUmVmPEVsZW1l
bnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkK
IHsKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBwYXJlbnQoKS0+ZG9jdW1lbnQoKTsKICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC03NCwxMyArNzQsMTMgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpCiAgICAgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbiA9IHRo
aXMtPmNob2ljZUFubm90YXRpb24oKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAot
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzZWxl
Y3RUYWcsIGZhbHNlKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KHNlbGVjdFRhZywgZmFsc2UpOwogCi0gICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9
IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKyAgICBhdXRvJiBz
dHlsZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudC5nZXQoKSk7CiAK
ICAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/Ci0gICAg
c3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBj
b2xvckZyb21OU0NvbG9yKGNob2ljZUFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxpemVkKCkp
OwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250RmFtaWx5LCBjaG9pY2VBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CisgICAgc3R5bGVk
RWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yRnJv
bU5TQ29sb3IoY2hvaWNlQW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAg
c3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWls
eSwgY2hvaWNlQW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOwogCiAgICAgTlNBcnJheSAqY2hv
aWNlcyA9IGNob2ljZUFubm90YXRpb24uY2hvaWNlczsKICAgICBOU1N0cmluZyAqc2VsZWN0ZWRD
aG9pY2UgPSBjaG9pY2VBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlOwpAQCAtOTMsNyArOTMsNyBAQCBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkKICAgICAgICAgaWYgKGNob2ljZSA9PSBzZWxlY3RlZENob2ljZSkKICAg
ICAgICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihzZWxlY3RlZEF0dHIsIEF0b21pY1N0cmluZygic2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7CiAKLSAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBwZW5kQ2hp
bGQoY2hvaWNlT3B0aW9uKTsKKyAgICAgICAgc3R5bGVkRWxlbWVudC5hcHBlbmRDaGlsZChjaG9p
Y2VPcHRpb24pOwogICAgIH0KIAogICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxk
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3
b3JkRmllbGQuaAppbmRleCAxNjMyNTBhZGJjNTgwNThlZDNiMDZmYjViMDk1YjA2MTRhMWZlMjgw
Li4zNmUyZTgyYjNiMjgwYThmNjFiYWE3YzUyNzViOWRhNzQ3MzhiNGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmll
bGQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blBhc3N3b3JkRmllbGQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVt
ZW50KCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2
ZW50Kikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IDBh
OTA3MDc2NDY3NjBhOWQzYmVkODY3NjEzYTFmYzYxM2NjMDg0NmQuLjY3Nzg0ODlkOGMwMWM2ZTIz
N2NlNWQ2NGY1YzcyMTlhNDI5MDM4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0K
QEAgLTUzLDkgKzUzLDkgQEAgUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBhc3N3
b3JkRmllbGQoKQogICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRy
PEVsZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkKK1JlZjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0
QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKKyAgICBhdXRvIGVsZW1lbnQg
PSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKICAg
ICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwogICAgIGVsZW1l
bnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3Rl
bmVyKCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90
YXRpb24uaAppbmRleCBhOGU2MmU5Y2M1MTY1OGFiZTU1NThmOWMwZDcyZjhjMDFjZWQ5ZTE4Li4w
Y2FlNmYwMGZlZTcwMTE4N2MyNDc0YThlN2UyMThhMWMyYTI3NThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAg
fQogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0
aW9uRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KaW5kZXggYmNmOWM1NWVhMjMzMzMw
MjU2ZTYxOWU1ZWU1YmRhZGI3NjcxMmUzZC4uN2RhZGEwNGM1MDk2ZjdhYTY0YThkZmUyODc1YzE0
ODcyMGNiY2ZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC03OSw3ICs3
OSw3IEBAIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24o
KQogICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVu
dD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKK1Jl
ZjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1l
bnQoKQogewogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwogCkBAIC05MCwyNyArOTAsMjMg
QEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5u
b3RhdGlvbkVsZW1lbnQoKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIGJvb2wg
aXNNdWx0aWxpbmUgPSB0ZXh0QW5ub3RhdGlvbi5pc011bHRpbGluZTsKIAotICAgIGlmIChpc011
bHRpbGluZSkKLSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGV4dGFy
ZWFUYWcsIGZhbHNlKTsKLSAgICBlbHNlCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7Ci0KKyAgICBhdXRvIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KGlzTXVsdGlsaW5lID8gdGV4dGFyZWFUYWcgOiBpbnB1dFRhZywgZmFs
c2UpCiAgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAKLSAgICBTdHlsZWRFbGVtZW50KiBzdHls
ZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOwor
ICAgIGF1dG8mIHN0eWxlZEVsZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50Jj4oZWxlbWVu
dC5nZXQoKSk7CiAKICAgICBpZiAoIXRleHRBbm5vdGF0aW9uKQogICAgICAgICByZXR1cm4gZWxl
bWVudDsKIAogICAgIC8vIEZJWE1FOiBNYXRjaCBmb250IHdlaWdodCBhbmQgc3R5bGUgYXMgd2Vs
bD8KLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
Q29sb3IsIGNvbG9yRnJvbU5TQ29sb3IodGV4dEFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxp
emVkKCkpOwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCB0ZXh0QW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOwotICAgIHN0
eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24s
IGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KHRleHRBbm5vdGF0aW9uLmFsaWdu
bWVudCkpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKHRleHRBbm5vdGF0aW9uLmZvbnRDb2xvcikuc2Vy
aWFsaXplZCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250RmFtaWx5LCB0ZXh0QW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOworICAg
IHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
biwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQodGV4dEFubm90YXRpb24uYWxp
Z25tZW50KSk7CiAKICAgICBpZiAoaXNNdWx0aWxpbmUpCi0gICAgICAgIGRvd25jYXN0PEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLT5zZXRWYWx1ZSh0ZXh0QW5ub3RhdGlvbi5z
dHJpbmdWYWx1ZSk7CisgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KHN0eWxl
ZEVsZW1lbnQpLnNldFZhbHVlKHRleHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlKTsKICAgICBlbHNl
Ci0gICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLT5zZXRW
YWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7CisgICAgICAgIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLnNldFZhbHVlKHRleHRBbm5vdGF0aW9uLnN0cmlu
Z1ZhbHVlKTsKIAogICAgIHJldHVybiBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCmluZGV4IDg0NmU4YmRmYmU5M2QxNmEyODFiYmYyYWFjM2MxMWI3NmNkMzIx
YjcuLjFjODZhODAwNmRiZTJhYWM0NzUwOGZhN2E3NDgwOTA3YzYzYzU0YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+
LCB1bnNpZ25lZD4KIAogc3RhdGljIFdvcmxkTWFwJiB3b3JsZE1hcCgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAoc3RkOjppbml0aWFsaXplcl9saXN0PFdvcmxk
TWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgMSwgc3RkOjptYWtlX3BhaXIoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgMSkgfSB9KTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8V29ybGRNYXA+IG1hcChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8V29ybGRNYXA6Oktl
eVZhbHVlUGFpclR5cGU+IHsgeyAxLCBzdGQ6Om1ha2VfcGFpcigmSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgMSkgfSB9KTsKIAogICAgIHJldHVybiBtYXA7CiB9CkBA
IC0yMDgsOSArMjA4LDkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JgogI2lmIEVOQUJMRShVU0VS
X01FU1NBR0VfSEFORExFUlMpCiBjbGFzcyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9y
UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3Jp
cHRvclByb3h5PiBjcmVhdGUoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKiBjb250cm9sbGVyLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1aW50
NjRfdCBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclByb3h5PiBjcmVhdGUoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKiBjb250cm9sbGVy
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCB1
aW50NjRfdCBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkoY29udHJvbGxlciwgbmFtZSwgd29y
bGQsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KGNvbnRyb2xsZXIsIG5hbWUsIHdvcmxkLCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+V2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVz
Y3JpcHRvclByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDVmNDU2
NTRlZjdiNDAyODZiYmRlYWI1OGYyZTJlMmMwODk5NjllZTcuLmI0NmU5YWEwNjk3NWFhYjI5NTIy
MWFlYjg5MjgxOGJlODYwMDk4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpA
QCAtNTksNyArNTksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VU
b0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1l
KQorc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5T
SW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7CiAgICAg
U2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncyA9IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNB
bHBoYTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBlMTE3
ODI1NDkzNGFhNTBkNDhlMmY3YWYzNDU1YjJjMzUyZTRiMzEuLjhmZTMwMmE5ZmZlMzA1NmJjMTVk
MzEyOGUyZDAxYzdiNGU1MzkwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU3OTMsMTQgKzU3OTMsMTQgQEAgdm9pZCBXZWJQYWdlOjph
ZGRVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnIKIHsKICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHR7IHNvdXJjZSwg
V2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwg
aW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAotICAgIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyLT5hZGRVc2VyU2NyaXB0KCpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxX
b3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ci0+YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgp
LCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjphZGRVc2VyU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lcyBpbmplY3RlZEZyYW1lcykKIHsKICAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2Vy
U3R5bGVTaGVldHsgc291cmNlLCBXZWJDb3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigp
LCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVsIH07
CiAKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQoKkluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hl
ZXQpKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5bGVT
aGVldCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggMWE1ZTEwMmVjNjM0OTM5NTZlMjA2ZjdlNmIzNWMz
NWRiZjQzN2Q1NC4uYzhjOTNiMmI5MDU4N2RjMDY5NmZjNWRhNmJhYzQ0MDIzYTM3NTFjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBzdHJ1Y3QgUHJp
bnRQYWdlc0RhdGEgewogICAgIGJvb2wgaXNWYWxpZCA6IDE7CiB9OwogCi1QYXNzUmVmUHRyPFdl
YlByaW50T3BlcmF0aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQorUmVmUHRyPFdlYlByaW50T3BlcmF0
aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvKQogewogI2lmIEhBVkUoR1RLX1VOSVhfUFJJTlRJTkcpCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcmludE9wZXJhdGlvbkd0a1VuaXgocGFnZSwgcHJp
bnRJbmZvKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgUGFzc1JlZlB0cjxXZWJQcmludE9wZXJhdGlv
bkd0az4gV2ViUHJpbnRPcGVyYXRpb25HdGs6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBjb24KICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShwcmludEluZm8p
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuaAppbmRleCBmNWZlYzEwNmNhMjc5NGI1Njc1NjE4NTNmYTgzMTE0NjE5
MDUxYzQ0Li43NDNjYzJjZTUyNTg5N2QxOTA3YjgyZWJmYjI0MTIzZDgyMjMwNDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQcmludElu
Zm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0
IF9HdGtQcmludFNldHRpbmdzIEd0a1ByaW50U2V0dGluZ3M7CkBAIC00OCw3ICs0OCw3IEBAIGNs
YXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViUHJpbnRPcGVyYXRpb25HdGs+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gY3JlYXRlKFdlYlBhZ2UqLCBjb25zdCBQcmludElu
Zm8mKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBjcmVhdGUoV2Vi
UGFnZSosIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZpcnR1YWwgfldlYlByaW50T3BlcmF0aW9u
R3RrKCk7CiAKICAgICBXZWJDb3JlOjpQcmludENvbnRleHQqIHByaW50Q29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpbnRDb250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDVjZjExMDhiZDA3MDNiOThh
MDZkMjY3MjM1YjA5NGNiMDExOTQ5MS4uOTFiOGYyMzUwMDgxMDZhMTU2YTM1Y2RhYjM4MDViNWEw
OGFkOTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxl
Y3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5
LCB1aW4KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhw
b2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZs
YWdzKSwgY2FsbGJhY2tJRCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VG
b3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24s
IGJvb2wgYmFzZUlzU3RhcnQpCitzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvc2l0aW9u
KEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNl
SXNTdGFydCkKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlv
biByZXN1bHQgPSBwb3NpdGlvbjsKQEAgLTEyMDMsMTAgKzEyMDMsMTAgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHAKICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRv
Y3VtZW50KCksIHJlc3VsdCwgc2VsZWN0aW9uRW5kKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmFu
Z2UucmVsZWFzZSgpOworICAgIHJldHVybiByYW5nZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8
UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5k
YXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uLCBib29sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewog
ICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJl
Y3Rpb25Gb3J3YXJkIDogRGlyZWN0aW9uQmFja3dhcmQ7CiAgICAgU2VsZWN0aW9uRGlyZWN0aW9u
IG9wcG9zaXRlRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERp
cmVjdGlvbkZvcndhcmQ7CkBAIC0xMjE2LDcgKzEyMTYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxS
YW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3Qg
VmlzaQogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51
bGFyaXR5LCBzYW1lRGlyZWN0aW9uKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3Vu
ZGFyeS4gTGVhdmUgc2VsZWN0aW9uIHdoZXJlIGl0IGlzLgotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsKQEAg
LTEyNTEsNyArMTI1MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJv
dW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpCiAgICAgaWYgKGV4dGVu
dC5pc051bGwoKSB8fCBleHRlbnQgPT0gYmFzZSkKICAgICAgICAgZXh0ZW50ID0gd29yZEJvdW5k
YXJ5OwogICAgIGlmIChleHRlbnQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiAoYmFzZSA8IGV4dGVudCkgPyBSYW5nZTo6
Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0ZW50KSA6IFJhbmdlOjpjcmVhdGUo
KmZyYW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUuaAppbmRleCA2MzM5YjIyMzA2NjM4ZTAyZjBmMDlmMWNmZTg3MmUxNTYzYjc0
OWI1Li4xODdjMWQ4MzFhZGE4MDAzOGJmMTc3NzlkNmI2YjljZThjZGJlOTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtMTYzLDkgKzE2Myw5IEBAIHB1YmxpYzoKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgS2V5ZnJhbWVWYWx1ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gdmFsdWUpCisgICAgICAgIEtleWZyYW1lVmFsdWUoUmVm
UHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4mJiB2YWx1ZSkKICAgICAgICAgICAgIDoga2V5
VHlwZShGaWx0ZXJLZXlUeXBlKQotICAgICAgICAgICAgLCBmaWx0ZXIodmFsdWUpCisgICAgICAg
ICAgICAsIGZpbHRlcihXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309966</attachid>
            <date>2017-05-12 16:32:40 -0700</date>
            <delta_ts>2017-05-12 16:41:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512163239.patch</filename>
            <type>text/plain</type>
            <size>54099</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggMWFlYzBiOTIyZWUzZWVkOWI0YTIx
ZGQ3NTYyNmE2Zjg1OGM0NjE1Zi4uOGNjNjI4YWMxNzYzZmE1Njk1ZDc0MTA1YzNlNDhlOThlODc4
NGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTQyLDcgKzQyLDcgQEAgKyAoV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKil3b3JsZAogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKW5vcm1hbFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoKkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA5NGFiNGRhNzU4YTBmMzA1ZTZmYzg0YmY2
YjljMjQ2NjQ0MWMwMDllLi5mODI1ZTA5MDViYjA5ZDNjOWQ0YzdjOTA4OWFlOWIwYzBmNmJjNGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBXS0J1bmRsZVBhZ2VDbGlja01lbnVJdGVtKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0Nv
bnRleHRNZW51SXRlbVJlZiBpdGUKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotc3Rh
dGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBXZWJDb250
ZXh0TWVudSYgY29udGV4dE1lbnUpCitzdGF0aWMgUmVmPEFQSTo6QXJyYXk+IGNvbnRleHRNZW51
SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51KQogewogICAgIGF1dG8gaXRl
bXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcAppbmRleCBiN2JkOGIzMDJiMzE3MmUxZmUzYmM4Y2JjNTM5YjhhZjkwNjI0
YWUwLi5iNDA5YzU5ZDZkNTkxMjUyYzlmNzhlMmY2M2I1YjAxMzVlN2U0YWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxkQ3JlYXRlV29ybGQoKQogCiBX
S0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCkpOworICAgIHJldHVybiB0b0FQSSgmSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFs
V29ybGQoKSk7CiB9CiAKIHZvaWQgV0tCdW5kbGVTY3JpcHRXb3JsZENsZWFyV3JhcHBlcnMoV0tC
dW5kbGVTY3JpcHRXb3JsZFJlZiBzY3JpcHRXb3JsZFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3Js
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0U2NyaXB0V29ybGQuY3BwCmluZGV4IGRjMDk1ZTBkN2E5MDBiNGQ2ZmM3OWUxNzVjMmM3
ODA5ZjNkZWY2YzEuLjhkNGM5NzhiZTAzNmIwZGIxZWRmY2RmMDU1MjA4MTg3NGVhYTM2MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9XZWJLaXRTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcApAQCAtOTksMTAgKzk5
LDEwIEBAIHZvaWQgd2Via2l0U2NyaXB0V29ybGRXaW5kb3dPYmplY3RDbGVhcmVkKFdlYktpdFNj
cmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnCiAgICAgZ19zaWduYWxfZW1pdCh3b3JsZCwg
c2lnbmFsc1tXSU5ET1dfT0JKRUNUX0NMRUFSRURdLCAwLCBwYWdlLCBmcmFtZSk7CiB9CiAKLXN0
YXRpYyBXZWJLaXRTY3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCkKK3N0YXRpYyBXZWJLaXRT
Y3JpcHRXb3JsZCogd2Via2l0U2NyaXB0V29ybGRDcmVhdGUoUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+JiYgc2NyaXB0V29ybGQpCiB7CiAgICAgV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxk
ID0gV0VCS0lUX1NDUklQVF9XT1JMRChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU0NSSVBUX1dP
UkxELCBOVUxMKSk7Ci0gICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gc2NyaXB0V29ybGQ7
CisgICAgd29ybGQtPnByaXYtPnNjcmlwdFdvcmxkID0gV1RGTW92ZShzY3JpcHRXb3JsZCk7CiAK
ICAgICBBU1NFUlQoIXNjcmlwdFdvcmxkcygpLmNvbnRhaW5zKHdvcmxkLT5wcml2LT5zY3JpcHRX
b3JsZC5nZXQoKSkpOwogICAgIHNjcmlwdFdvcmxkcygpLmFkZCh3b3JsZC0+cHJpdi0+c2NyaXB0
V29ybGQuZ2V0KCksIHdvcmxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9J
bmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCmluZGV4IDJhOGYxN2E0
YWNmODZiMjc3OTJkYmRlMzdkNzNmYjA1YjViNjA3NjYuLmUwMTFmNjJlMDNmY2JhNzMwZGU0MTc3
NTg2OTYzNTAzYWQwMzNjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcApAQCAtNDIsMTQgKzQy
LDE0IEBAIHN0YXRpYyBET01IYW5kbGVDYWNoZSYgZG9tSGFuZGxlQ2FjaGUoKQogICAgIHJldHVy
biBjYWNoZTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRp
b25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JD
cmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVEZWNsYXJhdGlvbikKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IEluamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGVEZWNsYXJhdGlvbikKIHsKICAgICBpZiAoIXN0eWxlRGVjbGFyYXRpb24pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3VsdCByZXN1bHQgPSBk
b21IYW5kbGVDYWNoZSgpLmFkZChzdHlsZURlY2xhcmF0aW9uLCBudWxscHRyKTsKICAgICBpZiAo
IXJlc3VsdC5pc05ld0VudHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIGF1dG8gc3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlKCpzdHlsZURlY2xhcmF0aW9uKSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb25IYW5kbGUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5o
CmluZGV4IDg0YzkzYzFlZDc0NGFjODY3YjMzOGU2ZjU0NDAwZmRmMTk5YjNjZjEuLjk1ZDkyMGNh
YmMyOGM3ZjU5NDk5N2VkOTYyNjViNTlkZTM4MjE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5oCkBA
IC0yNyw4ICsyNyw4IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlv
bkhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUNTU1N0
eWxlRGVjbGFyYXRpb25IYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
PiBnZXRPckNyZWF0ZShXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IGdldE9yQ3Jl
YXRlKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qKTsKICAgICB2aXJ0dWFsIH5JbmplY3Rl
ZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggMWEzNGE5MTQ0
YzdlMjg3MmYwM2Q4OWU4YzZmOWU4MThhYjdkYzY5ZC4uZjc0YTEyMTFhMjNiMzAzMWUzNzZjYzM3
ZjE2Y2EzZjEzMDI0ZjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5jcHAKQEAgLTU3LDQyICs1Nyw0MiBAQCBzdGF0aWMgRE9NSGFuZGxlQ2FjaGUm
IGRvbUhhbmRsZUNhY2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLVBhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JD
cmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIG9iamVjdCkKK1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRP
ckNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAg
IFJhbmdlKiByYW5nZSA9IEpTUmFuZ2U6OnRvV3JhcHBlZCh0b0pTKGNvbnRleHQpLT52bSgpLCB0
b0pTKG9iamVjdCkpOwogICAgIHJldHVybiBnZXRPckNyZWF0ZShyYW5nZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUoUmFuZ2UqIHJhbmdlKQorUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbmdlKiByYW5n
ZSkKIHsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhh
bmRsZUNhY2hlKCkuYWRkKHJhbmdlLCBudWxscHRyKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0Vu
dHJ5KQotICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
PihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CiAKLSAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZTo6Y3JlYXRlKHJhbmdlKTsKKyAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6Y3JlYXRlKCpyYW5nZSk7CiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHJhbmdlSGFuZGxlLnB0cigpOwogICAgIHJldHVybiBXVEZNb3ZlKHJhbmdlSGFuZGxlKTsK
IH0KIAotUmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OmNyZWF0ZShSYW5nZSogcmFuZ2UpCitSZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJhbmdlJiByYW5nZSkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKHJhbmdlKSk7
CiB9CiAKLUluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUoUmFuZ2UqIHJhbmdlKQorSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZShSYW5nZSYgcmFuZ2UpCiAgICAgOiBtX3JhbmdlKHJhbmdlKQogewogfQog
CiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjp+SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZSgp
CiB7Ci0gICAgZG9tSGFuZGxlQ2FjaGUoKS5yZW1vdmUobV9yYW5nZS5nZXQoKSk7CisgICAgZG9t
SGFuZGxlQ2FjaGUoKS5yZW1vdmUobV9yYW5nZS5wdHIoKSk7CiB9CiAKLVJhbmdlKiBJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlOjpjb3JlUmFuZ2UoKSBjb25zdAorUmFuZ2UmIEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmFuZ2Uu
Z2V0KCk7CiB9CkBAIC0xMDksNyArMTA5LDcgQEAgV2ViQ29yZTo6SW50UmVjdCBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpib3VuZGluZ1JlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY28KICAg
ICByZXR1cm4gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhlbmNsb3NpbmdJbnRSZWN0
KGJvdW5kaW5nUmVjdCkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVm
UHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNu
YXBzaG90T3B0aW9ucyBvcHRpb25zKQogewogICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50ID0g
bV9yYW5nZS0+b3duZXJEb2N1bWVudCgpOwogICAgIEZyYW1lKiBmcmFtZSA9IG93bmVyRG9jdW1l
bnQuZnJhbWUoKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcAog
ICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCpmcmFtZSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9u
IG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBmcmFt
ZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKm1fcmFuZ2UpKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obV9y
YW5nZSkpOwogCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3RvcikgPyAxIDogZnJhbWUtPnBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
bV9yYW5nZS0+YWJzb2x1dGVCb3VuZGluZ1JlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggNjQ3YjFjMjQ0YTkzNmQzZTdjMDkzZmQ1ZDdi
YTQ0MDI0NDNlYTYxNy4uZjgwZTMzYWJlODA2NTFkOTc5MThiOGRiZmExNDllNDYxZjU2YmM4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkltYWdlT3B0aW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ2LDI0ICs0NSwyNCBAQCBjbGFzcyBXZWJJbWFnZTsKIAogY2xhc3MgSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6OkJ1bmRsZVJhbmdlSGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZ2V0T3JDcmVhdGUoSlNDb250ZXh0UmVmLCBK
U09iamVjdFJlZik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZT4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6UmFuZ2UqKTsKKyAgICBzdGF0aWMgUmVmUHRyPElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRlKEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZ2V0
T3JDcmVhdGUoV2ViQ29yZTo6UmFuZ2UqKTsKIAogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUoKTsKIAogICAgIFJlZjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IGRvY3Vt
ZW50KCk7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRp
bmF0ZXMoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNu
YXBzaG90T3B0aW9ucyk7CisgICAgUmVmUHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNuYXBz
aG90T3B0aW9ucyk7CiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKIAotICAgIFdlYkNvcmU6OlJh
bmdlKiBjb3JlUmFuZ2UoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpSYW5nZSYgY29yZVJhbmdlKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlPiBjcmVhdGUoV2ViQ29yZTo6UmFuZ2UqKTsKLSAgICBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlKFdlYkNvcmU6OlJhbmdlKik7CisgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlPiBjcmVhdGUoV2ViQ29yZTo6UmFuZ2UmKTsKKyAgICBJbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlKFdlYkNvcmU6OlJhbmdlJik7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1f
cmFuZ2U7CisgICAgUmVmPFdlYkNvcmU6OlJhbmdlPiBtX3JhbmdlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDkyYjZmZGIxZmE2OTkzOWVm
OWVlNTdiMzkyZjVlM2U2NzgwMDAzZjYuLjYxZDljYzA3YzhlODkwYTkzMDk4MWZjN2E4NDQ5NDMz
YjQxMThlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPEluamVj
dGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJE
YXRhKQorUmVmUHRyPEluamVjdGVkQnVuZGxlPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlKGNvbnN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEFQSTo6T2JqZWN0KiBp
bml0aWFsaXphdGlvblVzZXJEYXRhKQogewogICAgIGF1dG8gYnVuZGxlID0gYWRvcHRSZWYoKm5l
dyBJbmplY3RlZEJ1bmRsZShwYXJhbWV0ZXJzKSk7CiAKQEAgLTU3Miw3ICs1NzIsNyBAQCB1aW50
NjRfdCBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29u
dGV4dCwgSlNWYWx1ZVJlZiBqcwogfQogCiAvLyBGSVhNRSBHZXQgcmlkIG9mIHRoaXMgZnVuY3Rp
b24gYW5kIG1vdmUgaXQgaW50byBXS0J1bmRsZS5jcHAuCi1QYXNzUmVmUHRyPEFQSTo6RGF0YT4g
SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBkYXRhKQorUmVmPEFQSTo6RGF0YT4gSW5qZWN0ZWRCdW5kbGU6
OmNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBkYXRhKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUgPSB0b0pTKGNvbnRl
eHQpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBhcnJheURhdGEgPSBXZWJDb3JlOjp0b1Vuc2hh
cmVkVWludDhBcnJheShleGVjU3RhdGUtPnZtKCksIHRvSlMoZXhlY1N0YXRlLCBkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKaW5kZXggMDAwNTUwYmZmMjQxY2MwNWQ2NTRjZThmMTE2OWRlMmE3MmM2
MzFhMC4uOGYzMzdjYzlmMzBiYmM4ZGM3MDE2ODQ0ODFjOTVmMjgxNTlhOGE4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIldLQnVuZGxlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2Vy
U2NyaXB0VHlwZXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc1LDcgKzc1LDcgQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpOworICAg
IHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IGNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpOwog
CiAgICAgfkluamVjdGVkQnVuZGxlKCk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqLCBjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHJlbW92ZUFsbFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqKTsKICAgICB1aW50NjRfdCB3ZWJOb3RpZmlj
YXRpb25JRChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwotICAgIFBhc3NSZWZQdHI8QVBJOjpE
YXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KTsKKyAgICBSZWY8QVBJOjpEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFVzZXJDb250ZW50IEFQSQogICAgIHZvaWQg
YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSosIEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEFQSTo6QXJyYXkq
IHdoaXRlbGlzdCwgQVBJOjpBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5q
ZWN0aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGU4NzkwNWJj
YTJjM2Q5NmRiYzlmOTEyNWRlZWViNjA4N2RkODM4NmIuLjNmMjYwODRiMWU0ZTdiYjVhYzA5ZTA2
MTJjMGU3ZDU3ZWZlYTRiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3QuY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdElu
ZGV4KGludCBpbmRleCkgY29uc3QKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0+IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleChpbnQgaW5k
ZXgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBQYWdlKiBwYWdlID0gbV9wYWdlLT5jb3JlUGFnZSgpOwog
ICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShw
YWdlLT5iYWNrRm9yd2FyZCgpLml0ZW1BdEluZGV4KGluZGV4KSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaAppbmRleCBhNDRkMGI5NjIwMGIwMjMx
ZTZiOWVhNzExZGMwOGJiYTI0NTcxNjBjLi45ZWRhZmFhYzdlZjk3ODI3Nzg0N2VhZWQ3YzgwMDA5
OTA4MTg1YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
NDIsMTEgKzQyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QocGFnZSkpOwogICAgIH0KIAotICAgIHZvaWQgZGV0
YWNoKCkgeyBtX3BhZ2UgPSAwOyB9CisgICAgdm9pZCBkZXRhY2goKSB7IG1fcGFnZSA9IG51bGxw
dHI7IH0KIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtPiBpdGVtQXRJbmRleChpbnQpIGNvbnN0OworICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW1BdEluZGV4KGludCkgY29u
c3Q7CiAgICAgaW50IGJhY2tMaXN0Q291bnQoKSBjb25zdDsKICAgICBpbnQgZm9yd2FyZExpc3RD
b3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uaAppbmRleCA0MjgyN2Y2ZjRmZWVlMTU0N2U5YjZkOGRlNTYwMzE0ZDFjNTNk
MWJkLi4xNWU2YTU3MWI2NWVmZDQzMTVkZTllYzg5YjEzNWI3ZmQyZDkwNDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTM5LDEx
ICszOSwxMSBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OkJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGNyZWF0ZShQYXNzUmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtKQorICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6Okhpc3Rv
cnlJdGVtPiYmIGl0ZW0pCiAgICAgewogICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0oaXRlbSkpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
KFdURk1vdmUoaXRlbSkpKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRl
bSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbS5nZXQoKTsgfQpAQCAtNjAsNyArNjAsOSBAQCBwdWJs
aWM6CiAgICAgUmVmPEFQSTo6QXJyYXk+IGNoaWxkcmVuKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IGl0ZW0pIDogbV9pdGVtKGl0ZW0pIHsgfQorICAgIGV4cGxpY2l0IEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbShSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+
JiYgaXRlbSkKKyAgICAgICAgOiBtX2l0ZW0oV1RGTW92ZShpdGVtKSkKKyAgICB7IH0KIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gbV9pdGVtOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCA4MjZkMzcyMTliYjA2YTg2N2U2
ZmIxNzQ1NDhjN2MwOGUwNzMwZjU1Li43MmFlNzcyN2Q0NWU0ZmRhOTcxOTMyNTI5ZjI5N2Y4MTcz
MzU2NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3Bw
CkBAIC00NiwxMiArNDYsMTIgQEAgUmVmPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoY29uc3QgSGl0VGUKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCkp
OwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKCkgY29uc3QKK1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6bm9kZUhhbmRsZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
bV9oaXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6dXJs
RWxlbWVudEhhbmRsZSgpIGNvbnN0CitSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OnVybEVsZW1lbnRIYW5kbGUoKSBjb25zdAogewog
ICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKG1faGl0VGVz
dFJlc3VsdC5VUkxFbGVtZW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmgKaW5kZXggMjU4MmI0N2RkZjk5YTc3Zjg2ZDg0ZTQ4MWZjN2I0ZjA1MWQ5MDI3
Mi4uMTRlM2U2NzM4NmY1NTVmMGRhODdlMjAyNThjMTdkYjJhMTE3MGY3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0TWVkaWFUeXBlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsOCArNDQsOCBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBjb3JlSGl0VGVzdFJlc3Vs
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdFJlc3VsdDsgfQogCi0gICAgUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUoKSBjb25zdDsKLSAgICBQYXNzUmVm
UHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gdXJsRWxlbWVudEhhbmRsZSgpIGNvbnN0Owor
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUoKSBjb25zdDsK
KyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxFbGVtZW50SGFuZGxlKCkg
Y29uc3Q7CiAgICAgV2ViRnJhbWUqIGZyYW1lKCkgY29uc3Q7CiAgICAgV2ViRnJhbWUqIHRhcmdl
dEZyYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcAppbmRleCAzNTY5ZmQ4NzViZTg2Yzk1ODZmMGVlN2IyNTAwMTNjOTdjM2M1
M2RlLi43NmQ1MDY4ZjU5Mjc5OWJiMjA1MmJiOGRkYmFlMjAxNjVlYTg4MTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC05NywxMiAr
OTcsMTIgQEAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbjo6c3ludGhldGljQ2xpY2sKICAgICByZXR1cm4gc3ludGhldGljQ2xp
Y2tUeXBlRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0
aW9uQWN0aW9uKSk7CiB9CiAKLVJlZjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IElu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlKQorUmVmPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwg
YWN0aW9uLCBmb3JtU3RhdGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24oZnJhbWUsIGFjdGlvbiwgV1RGTW92ZShmb3JtU3RhdGUpKSk7
CiB9CiAKLUluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2
aWdhdGlvbkFjdGlvbiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK0luamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwg
UmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUpCiAgICAgOiBtX25hdmlnYXRpb25UeXBlKG5h
dmlnYXRpb25BY3Rpb24udHlwZSgpKQogICAgICwgbV9tb2RpZmllcnMobW9kaWZpZXJzRm9yTmF2
aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSkKICAgICAsIG1fbW91c2VCdXR0b24oV2Vi
TW91c2VFdmVudDo6Tm9CdXR0b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uaAppbmRleCBiMzc2NmUzMjYxYTAwZTgxNWE5ZTYzNTZlMjlhZWIxNTJhYTg2
MWJiLi5mYTZhMmE1NDhiNzZkZjcwYWM0NTZmYmIxNmE0Zjc3MDA0MjIxOGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKICNpbmNsdWRlICJXZWJF
dmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBX
ZWJGcmFtZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlTmF2aWdhdGlvbkFjdGlv
bj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uPiBjcmVhdGUoV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsKKyAgICBzdGF0aWMgUmVmPEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbj4gY3JlYXRlKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6
TmF2aWdhdGlvbkFjdGlvbiYsIFJlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYpOwogCiAgICAg
c3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNlRXZl
bnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6
TmF2aWdhdGlvbkFjdGlvbiYpOwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgQXRvbWlj
U3RyaW5nIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJp
YnV0ZTsgfQogCiBwcml2YXRlOgotICAgIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihX
ZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkZvcm1TdGF0ZT4pOworICAgIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihX
ZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBSZWZQdHI8V2ViQ29y
ZTo6Rm9ybVN0YXRlPiYmKTsKIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG1fbmF2aWdh
dGlvblR5cGU7CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtX21vZGlmaWVyczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1YmE0N2Nj
MzgzY2RhODI0MDJhNDdlYzlkOTU3N2E5NTBjMGRmZmU5Li5lMjViMDcxYjIxMTlhYjU3MDQ1MzRm
NDc2OTY2ZTJhMzA5MTZmMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViUGFnZSog
cGFnZSwKICAgICBpZiAoIW1fY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJh
bWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZDo6Z2V0T3JDcmVhdGUod29ybGQpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICBtX2NsaWVudC5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKHRvQVBJKHBhZ2Up
LCB0b0FQSShmcmFtZSksIHRvQVBJKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3Jl
YXRlKHdvcmxkKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwCmluZGV4IDllMTFhNzYyODgxYzAwNjZhZGJhZDg1YTBi
ZDdmNjczMjY1MjE3MjkuLmIxNzgzMWQyYzdhOTQzZGM0ZDZjMzQ1NTFkMzJiYjBiMmY0ODZmYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcApAQCAtNjEsMjAg
KzYxLDIwIEBAIFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3Js
ZCgpLCBuYW1lKSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4g
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCkKK1JlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOjpnZXRPckNyZWF0ZShET01XcmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmICgm
d29ybGQgPT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpKQogICAgICAgICByZXR1cm4gbm9ybWFs
V29ybGQoKTsKIAogICAgIGlmIChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBleGlzdGluZ1dv
cmxkID0gYWxsV29ybGRzKCkuZ2V0KCZ3b3JsZCkpCi0gICAgICAgIHJldHVybiBleGlzdGluZ1dv
cmxkOworICAgICAgICByZXR1cm4gKmV4aXN0aW5nV29ybGQ7CiAKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQod29ybGQsIHVuaXF1ZVdvcmxkTmFtZSgp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCh3
b3JsZCwgdW5pcXVlV29ybGROYW1lKCkpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKQorSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKQog
ewotICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCA9IGFkb3B0UmVm
KG5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBT
dHJpbmcoKSkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCYgd29ybGQgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZygpKSkubGVha1JlZigpOwogICAgIHJldHVybiB3b3Js
ZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaAppbmRleCBmZTc5
NmY2ZTg1M2MzYjhiZGNlZGQ1MzJhNDhlMjY4Mzk4NjQ4ZWNiLi41MDkyYWU3MjU3NmVjYTE4NmIy
YjU0ODZiZGY1ZjE2ZGE5Njc5NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6QnVuZAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZD4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxk
Jik7Ci0gICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIG5vcm1hbFdvcmxkKCk7
CisgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKKyAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCYgbm9ybWFsV29ybGQoKTsKIAogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMTdkMzVjOTRhMDkx
YzgxNjdjNWU3YzdmZjczNDU4ZGQ5Yjc1MTdjYi4uYTRkN2YxYTkwY2M5MDI5MWE3NzEwOWQxNjgx
ZmUyNGJiMzMyMDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC01MywxOCArNTMs
MTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAvLyBUaGUgcGx1Zy1pbiB0aGF0IHdlJ3JlIGN1cnJl
bnRseSBjYWxsaW5nIE5QUF9OZXcgZm9yLgogc3RhdGljIE5ldHNjYXBlUGx1Z2luKiBjdXJyZW50
TlBQTmV3UGx1Z2luOwogCi1SZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNjYXBlUGx1Z2luOjpj
cmVhdGUoUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQorUmVm
UHRyPE5ldHNjYXBlUGx1Z2luPiBOZXRzY2FwZVBsdWdpbjo6Y3JlYXRlKFJlZlB0cjxOZXRzY2Fw
ZVBsdWdpbk1vZHVsZT4mJiBwbHVnaW5Nb2R1bGUpCiB7CiAgICAgaWYgKCFwbHVnaW5Nb2R1bGUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
c2NhcGVQbHVnaW4ocGx1Z2luTW9kdWxlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
c2NhcGVQbHVnaW4ocGx1Z2luTW9kdWxlLnJlbGVhc2VOb25OdWxsKCkpKTsKIH0KICAgICAKLU5l
dHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdpbihQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9k
dWxlPiBwbHVnaW5Nb2R1bGUpCitOZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUmVmPE5l
dHNjYXBlUGx1Z2luTW9kdWxlPiYmIHBsdWdpbk1vZHVsZSkKICAgICA6IFBsdWdpbihOZXRzY2Fw
ZVBsdWdpblR5cGUpCiAgICAgLCBtX25leHRSZXF1ZXN0SUQoMCkKLSAgICAsIG1fcGx1Z2luTW9k
dWxlKHBsdWdpbk1vZHVsZSkKKyAgICAsIG1fcGx1Z2luTW9kdWxlKFdURk1vdmUocGx1Z2luTW9k
dWxlKSkKICAgICAsIG1fbnBXaW5kb3coKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC0xMTAyLDcgKzExMDIsNyBAQCBTY3JvbGxiYXIqIE5ldHNjYXBl
UGx1Z2luOjp2ZXJ0aWNhbFNjcm9sbGJhcigpCiBib29sIE5ldHNjYXBlUGx1Z2luOjpzdXBwb3J0
c1NuYXBzaG90dGluZygpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgcmV0dXJu
IG1fcGx1Z2luTW9kdWxlICYmIG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3MoKS5jb250YWlu
cyhQbHVnaW5RdWlya3M6OlN1cHBvcnRzU25hcHNob3R0aW5nKTsKKyAgICByZXR1cm4gbV9wbHVn
aW5Nb2R1bGUtPnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6U3VwcG9ydHNT
bmFwc2hvdHRpbmcpOwogI2VuZGlmCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAppbmRleCA3ODIyN2Y1Zjk0ZjRhYzc0ZGEwNTU2MGViNDY0Mjc2ZTQzMWRhNGE5Li4w
N2M4YjA4NmFiODllZDk3YWY0NDIyNDlmOGE3ODEyZmNmY2I5ZTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBOZXRzY2FwZVBsdWdpblVuaXg7CiAKIGNs
YXNzIE5ldHNjYXBlUGx1Z2luIDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gY3JlYXRlKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5N
b2R1bGU+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVhdGUoUmVmUHRy
PE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmKTsKICAgICB2aXJ0dWFsIH5OZXRzY2FwZVBsdWdpbigp
OwogCiAgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gZnJvbU5QUChOUFApOwpAQCAt
MTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgotICAgIE5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+
IHBsdWdpbk1vZHVsZSk7CisgICAgZXhwbGljaXQgTmV0c2NhcGVQbHVnaW4oUmVmPE5ldHNjYXBl
UGx1Z2luTW9kdWxlPiYmKTsKIAogICAgIHZvaWQgY2FsbFNldFdpbmRvdygpOwogICAgIHZvaWQg
Y2FsbFNldFdpbmRvd0ludmlzaWJsZSgpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHByaXZhdGU6CiAg
ICAgU3RyZWFtc01hcCBtX3N0cmVhbXM7CiAgICAgSGFzaE1hcDx2b2lkKiwgc3RkOjpwYWlyPFJl
ZlB0cjxOZXRzY2FwZVBsdWdpblN0cmVhbT4sIFN0cmluZz4+IG1fcmVkaXJlY3RzOwogCi0gICAg
UmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBtX3BsdWdpbk1vZHVsZTsKKyAgICBSZWY8TmV0
c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1Z2luTW9kdWxlOwogICAgIE5QUF90IG1fbnBwOwogICAg
IE5QV2luZG93IG1fbnBXaW5kb3c7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKaW5kZXggZjYzMzk3
MDFlNjYwMTA5ZTI5MWE4ZmMwYzViOTFhNDk4OWEzNGViZS4uYWZkYTE3MTEzYTY1NzNiNDBmNWU0
MmRkZDAzMjQyZDllYWRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgUERGUGx1Z2luOwogCiBjbGFzcyBQREZQbHVnaW5Bbm5vdGF0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8UERGUGx1Z2luQW5ub3RhdGlvbj4gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBERlBsdWdpbkFubm90YXRpb24+IGNyZWF0ZShQREZBbm5vdGF0aW9uICos
IFBERkxheWVyQ29udHJvbGxlciAqLCBQREZQbHVnaW4qKTsKKyAgICBzdGF0aWMgUmVmUHRyPFBE
RlBsdWdpbkFubm90YXRpb24+IGNyZWF0ZShQREZBbm5vdGF0aW9uICosIFBERkxheWVyQ29udHJv
bGxlciAqLCBQREZQbHVnaW4qKTsKICAgICB2aXJ0dWFsIH5QREZQbHVnaW5Bbm5vdGF0aW9uKCk7
CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50LmdldCgpOyB9CkBAIC03NSw3ICs3NSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSA9
IDA7CisgICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVs
ZW1lbnQoKSA9IDA7CiAKICAgICBjbGFzcyBQREZQbHVnaW5Bbm5vdGF0aW9uRXZlbnRMaXN0ZW5l
ciA6IHB1YmxpYyBXZWJDb3JlOjpFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24ubW0KaW5kZXggNDIyYmRhYzQ5YjRmODgxY2FmYTI4MzViNzE2MmJkZThiNjFi
OWIxYy4uNzRkY2JjODM3OTE0YzQzNzcyZGFhZDc1OWNlMWFmYmQ3NzA2OWJhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbQpAQCAtNTIsMTQgKzUyLDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1QYXNzUmVmUHRyPFBERlBsdWdpbkFubm90
YXRpb24+IFBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9uICphbm5vdGF0
aW9uLCBQREZMYXllckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBw
bHVnaW4pCitSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gUERGUGx1Z2luQW5ub3RhdGlvbjo6
Y3JlYXRlKFBERkFubm90YXRpb24gKmFubm90YXRpb24sIFBERkxheWVyQ29udHJvbGxlciAqcGRm
TGF5ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikKIHsKICAgICBpZiAoW2Fubm90YXRp
b24gaXNLaW5kT2ZDbGFzczpwZGZBbm5vdGF0aW9uVGV4dFdpZGdldENsYXNzKCldKQogICAgICAg
ICByZXR1cm4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZShhbm5vdGF0aW9uLCBwZGZM
YXllckNvbnRyb2xsZXIsIHBsdWdpbik7CiAgICAgaWYgKFthbm5vdGF0aW9uIGlzS2luZE9mQ2xh
c3M6cGRmQW5ub3RhdGlvbkNob2ljZVdpZGdldENsYXNzKCldKQogICAgICAgICByZXR1cm4gUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlKGFubm90YXRpb24sIHBkZkxheWVyQ29udHJv
bGxlciwgcGx1Z2luKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
CiB2b2lkIFBERlBsdWdpbkFubm90YXRpb246OmF0dGFjaChFbGVtZW50KiBwYXJlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCmluZGV4IDZhZjg3Y2Q3ZjkyYjY4MGYxMmU0Mjc4
MDNjODY2MmVjNWVlMmJiOTQuLjBmNzY3NWM1ZDIzMWQ1N2Q5MmJkNjI3OTM2ZTllMDI0ZDJlMWM2
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVu
dD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6
RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKIAogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lm1tCmluZGV4IDI3MzUwMzI1MmYwMDY4ZmJhZmRkZGJmM2ZkOWVlMjI0YjZmNmNmNWMuLmRiZTVh
ZTk3NTFmZWRjOGM4ZGYyMjEzMGY0YmFlM2EwMzkxZGJkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24ubW0KQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBQREZQbHVnaW5DaG9pY2VB
bm5vdGF0aW9uOjpjb21taXQoKQogICAgIFBERlBsdWdpbkFubm90YXRpb246OmNvbW1pdCgpOwog
fQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0
ZUFubm90YXRpb25FbGVtZW50KCkKK1JlZjxFbGVtZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0
aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
ID0gcGFyZW50KCktPmRvY3VtZW50KCk7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApA
QCAtNzQsMTMgKzc0LDEzIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogICAgIFBERkFubm90YXRpb25DaG9p
Y2VXaWRnZXQgKmNob2ljZUFubm90YXRpb24gPSB0aGlzLT5jaG9pY2VBbm5vdGF0aW9uKCk7CiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc2VsZWN0VGFnLCBmYWxzZSk7CisgICAgYXV0byBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzZWxlY3RUYWcsIGZhbHNlKTsKIAotICAg
IFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4oZWxlbWVudC5nZXQoKSk7CisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRvd25jYXN0PFN0
eWxlZEVsZW1lbnQ+KGVsZW1lbnQuZ2V0KCkpOwogCiAgICAgLy8gRklYTUU6IE1hdGNoIGZvbnQg
d2VpZ2h0IGFuZCBzdHlsZSBhcyB3ZWxsPwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcihjaG9pY2VBbm5v
dGF0aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgY2hvaWNlQW5ub3RhdGlv
bi5mb250LmZhbWlseU5hbWUpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKGNob2ljZUFubm90YXRpb24u
Zm9udENvbG9yKS5zZXJpYWxpemVkKCkpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGNob2ljZUFubm90YXRpb24uZm9udC5m
YW1pbHlOYW1lKTsKIAogICAgIE5TQXJyYXkgKmNob2ljZXMgPSBjaG9pY2VBbm5vdGF0aW9uLmNo
b2ljZXM7CiAgICAgTlNTdHJpbmcgKnNlbGVjdGVkQ2hvaWNlID0gY2hvaWNlQW5ub3RhdGlvbi5z
dHJpbmdWYWx1ZTsKQEAgLTkzLDcgKzkzLDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVn
aW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAgICAgICAgIGlm
IChjaG9pY2UgPT0gc2VsZWN0ZWRDaG9pY2UpCiAgICAgICAgICAgICBjaG9pY2VPcHRpb24tPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc2VsZWN0ZWRBdHRyLCBBdG9taWNTdHJp
bmcoInNlbGVjdGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCi0g
ICAgICAgIHN0eWxlZEVsZW1lbnQtPmFwcGVuZENoaWxkKGNob2ljZU9wdGlvbik7CisgICAgICAg
IHN0eWxlZEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hvaWNlT3B0aW9uKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKaW5kZXggMTYzMjUwYWRi
YzU4MDU4ZWQzYjA2ZmI1YjA5NWIwNjE0YTFmZTI4MC4uMzZlMmU4MmIzYjI4MGE4ZjYxYmFhN2M1
Mjc1YjlkYTc0NzM4YjRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRlOworICAgIFJlZjxX
ZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFz
c3dvcmRGaWVsZC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luUGFzc3dvcmRGaWVsZC5tbQppbmRleCAwYTkwNzA3NjQ2NzYwYTlkM2JlZDg2NzYxM2Ex
ZmM2MTNjYzA4NDZkLi42Nzc4NDg5ZDhjMDFjNmUyMzdjZTVkNjRmNWM3MjE5YTQyOTAzOGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
blBhc3N3b3JkRmllbGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCkBAIC01Myw5ICs1Myw5IEBAIFBERlBsdWdp
blBhc3N3b3JkRmllbGQ6On5QREZQbHVnaW5QYXNzd29yZEZpZWxkKCkKICAgICBlbGVtZW50KCkt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3Rl
bmVyKCksIGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29y
ZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitSZWY8RWxlbWVudD4gUERGUGx1Z2lu
UGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewotICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCk7CisgICAgYXV0byBlbGVtZW50ID0gUERGUGx1Z2luVGV4dEFubm90YXRpb246
OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKHR5
cGVBdHRyLCAicGFzc3dvcmQiKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5rZXl1cEV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAgICAgcmV0dXJu
IGVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKaW5kZXggYThlNjJlOWNjNTE2
NThhYmU1NTU4ZjljMGQ3MmY4YzAxY2VkOWUxOC4uMGNhZTZmMDBmZWU3MDExODdjMjQ3NGE4ZTdl
MjE4YTFjMmEyNzU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaApAQCAtNTQsNyAr
NTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICBSZWY8
V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgdmFsdWUoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5v
dGF0aW9uLm1tCmluZGV4IGJjZjljNTVlYTIzMzMzMDI1NmU2MTllNWVlNWJkYWRiNzY3MTJlM2Qu
LjcxMDk0NWVhZDMxMTcxNGUzYmY2YTYyOWE5OTQwNmY2YjMzODczMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW5UZXh0QW5ub3RhdGlvbi5tbQpAQCAtNzksMTAgKzc5LDggQEAgUERGUGx1Z2luVGV4dEFubm90
YXRpb246On5QREZQbHVnaW5UZXh0QW5ub3RhdGlvbigpCiAgICAgZWxlbWVudCgpLT5yZW1vdmVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCks
IGZhbHNlKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlv
bjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQorUmVmPEVsZW1lbnQ+IFBERlBsdWdpblRleHRB
bm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7Ci0gICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQ7Ci0KICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBwYXJlbnQoKS0+ZG9jdW1l
bnQoKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKQEAgLTkwLDI3ICs4OCwy
MyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVB
bm5vdGF0aW9uRWxlbWVudCgpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgYm9v
bCBpc011bHRpbGluZSA9IHRleHRBbm5vdGF0aW9uLmlzTXVsdGlsaW5lOwogCi0gICAgaWYgKGlz
TXVsdGlsaW5lKQotICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0ZXh0
YXJlYVRhZywgZmFsc2UpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoaW5wdXRUYWcsIGZhbHNlKTsKLQorICAgIGF1dG8gZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoaXNNdWx0aWxpbmUgPyB0ZXh0YXJlYVRhZyA6IGlucHV0VGFnLCBm
YWxzZSk7CiAgICAgZWxlbWVudC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93
bkV2ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiAKLSAgICBTdHlsZWRFbGVtZW50KiBz
dHlsZWRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkp
OworICAgIGF1dG8mIHN0eWxlZEVsZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihlbGVt
ZW50LmdldCgpKTsKIAogICAgIGlmICghdGV4dEFubm90YXRpb24pCiAgICAgICAgIHJldHVybiBl
bGVtZW50OwogCiAgICAgLy8gRklYTUU6IE1hdGNoIGZvbnQgd2VpZ2h0IGFuZCBzdHlsZSBhcyB3
ZWxsPwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcih0ZXh0QW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlh
bGl6ZWQoKSk7Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRGYW1pbHksIHRleHRBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7Ci0gICAg
c3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
biwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQodGV4dEFubm90YXRpb24uYWxp
Z25tZW50KSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5Q29sb3IsIGNvbG9yRnJvbU5TQ29sb3IodGV4dEFubm90YXRpb24uZm9udENvbG9yKS5z
ZXJpYWxpemVkKCkpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZvbnRGYW1pbHksIHRleHRBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7Cisg
ICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFs
aWduLCBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudCh0ZXh0QW5ub3RhdGlvbi5h
bGlnbm1lbnQpKTsKIAogICAgIGlmIChpc011bHRpbGluZSkKLSAgICAgICAgZG93bmNhc3Q8SFRN
TFRleHRBcmVhRWxlbWVudD4oc3R5bGVkRWxlbWVudCktPnNldFZhbHVlKHRleHRBbm5vdGF0aW9u
LnN0cmluZ1ZhbHVlKTsKKyAgICAgICAgZG93bmNhc3Q8SFRNTFRleHRBcmVhRWxlbWVudD4oc3R5
bGVkRWxlbWVudCkuc2V0VmFsdWUodGV4dEFubm90YXRpb24uc3RyaW5nVmFsdWUpOwogICAgIGVs
c2UKLSAgICAgICAgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oc3R5bGVkRWxlbWVudCktPnNl
dFZhbHVlKHRleHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlKTsKKyAgICAgICAgZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oc3R5bGVkRWxlbWVudCkuc2V0VmFsdWUodGV4dEFubm90YXRpb24uc3Ry
aW5nVmFsdWUpOwogCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5jcHAKaW5kZXggODQ2ZThiZGZiZTkzZDE2YTI4MWJiZjJhYWMzYzExYjc2Y2Qz
MjFiNy4uMWM4NmE4MDA2ZGJlMmFhYzQ3NTA4ZmE3YTc0ODA5MDdjNjNjNTRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCB0eXBlZGVmIEhh
c2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZD4sIHVuc2lnbmVkPgogCiBzdGF0aWMgV29ybGRNYXAmIHdvcmxkTWFwKCkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V29ybGRNYXA+IG1hcChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8V29y
bGRNYXA6OktleVZhbHVlUGFpclR5cGU+IHsgeyAxLCBzdGQ6Om1ha2VfcGFpcihJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAxKSB9IH0pOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6
S2V5VmFsdWVQYWlyVHlwZT4geyB7IDEsIHN0ZDo6bWFrZV9wYWlyKCZJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAxKSB9IH0pOwogCiAgICAgcmV0dXJuIG1hcDsKIH0K
QEAgLTIwOCw5ICsyMDgsOSBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mCiAjaWYgRU5BQkxFKFVT
RVJfTUVTU0FHRV9IQU5ETEVSUykKIGNsYXNzIFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yUHJveHk+IGNyZWF0ZShXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqIGNvbnRyb2xsZXIs
IGNvbnN0IFN0cmluZyYgbmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIHVp
bnQ2NF90IGlkZW50aWZpZXIpCisgICAgc3RhdGljIFJlZjxXZWJVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yUHJveHk+IGNyZWF0ZShXZWJVc2VyQ29udGVudENvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQs
IHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShjb250cm9sbGVyLCBuYW1lLCB3
b3JsZCwgaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVc2Vy
TWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkoY29udHJvbGxlciwgbmFtZSwgd29ybGQsIGlk
ZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5XZWJVc2VyTWVzc2FnZUhhbmRsZXJE
ZXNjcmlwdG9yUHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggNWY0
NTY1NGVmN2I0MDI4NmJiZGVhYjU4ZjJlMmUyYzA4OTk2OWVlNy4uYjQ2ZTlhYTA2OTc1YWFiMjk1
MjIxYWViODkyODE4YmU4NjAwOTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
CkBAIC01OSw3ICs1OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnRJbWFn
ZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJh
bWUpCitzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAo
TlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKICAg
ICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIGZsYWdzID0gU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0
c0FscGhhOwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGUx
MTc4MjU0OTM0YWE1MGQ0OGUyZjdhZjM0NTViMmMzNTJlNGIzMS4uOGZlMzAyYTlmZmUzMDU2YmMx
NWQzMTI4ZTJkMDFjN2I0ZTUzOTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTc5MywxNCArNTc5MywxNCBAQCB2b2lkIFdlYlBhZ2U6
OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50
SW5qZWN0ZWRGcgogewogICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdHsgc291cmNl
LCBXZWJDb3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigp
LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCi0gICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTY3JpcHQoKkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1h
bFdvcmxkKCksIFdURk1vdmUodXNlclNjcmlwdCkpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9s
bGVyLT5hZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCksIFdURk1vdmUodXNlclNjcmlwdCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVz
ZXJTdHlsZVNoZWV0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+
KCksIFZlY3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwg
fTsKIAotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldCgqSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5bGVT
aGVldCkpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldChJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTdHls
ZVNoZWV0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCAxYTVlMTAyZWM2MzQ5Mzk1NmUyMDZmN2U2YjM1
YzM1ZGJmNDM3ZDU0Li5jOGM5M2IyYjkwNTg3ZGMwNjk2ZmM1ZGE2YmFjNDQwMjNhMzc1MWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHN0cnVjdCBQ
cmludFBhZ2VzRGF0YSB7CiAgICAgYm9vbCBpc1ZhbGlkIDogMTsKIH07CiAKLVBhc3NSZWZQdHI8
V2ViUHJpbnRPcGVyYXRpb25HdGs+IFdlYlByaW50T3BlcmF0aW9uR3RrOjpjcmVhdGUoV2ViUGFn
ZSogcGFnZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCitSZWZQdHI8V2ViUHJpbnRPcGVy
YXRpb25HdGs+IFdlYlByaW50T3BlcmF0aW9uR3RrOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8pCiB7CiAjaWYgSEFWRShHVEtfVU5JWF9QUklOVElORykK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByaW50T3BlcmF0aW9uR3RrVW5peChwYWdlLCBw
cmludEluZm8pKTsKQEAgLTM4OCw3ICszODgsNyBAQCBQYXNzUmVmUHRyPFdlYlByaW50T3BlcmF0
aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIGNvbgog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHByaW50SW5m
byk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
cmludE9wZXJhdGlvbkd0ay5oCmluZGV4IGY1ZmVjMTA2Y2EyNzk0YjU2NzU2MTg1M2ZhODMxMTQ2
MTkwNTFjNDQuLjc0M2NjMmNlNTI1ODk3ZDE5MDdiODJlYmZiMjQxMjNkODIyMzA0OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVy
YXRpb25HdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlByaW50T3BlcmF0aW9uR3RrLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIlByaW50
SW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1
Y3QgX0d0a1ByaW50U2V0dGluZ3MgR3RrUHJpbnRTZXR0aW5nczsKQEAgLTQ4LDcgKzQ4LDcgQEAg
Y2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgV2ViUHJpbnRPcGVyYXRpb25HdGsgOiBwdWJsaWMgUmVm
Q291bnRlZDxXZWJQcmludE9wZXJhdGlvbkd0az4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBjcmVhdGUoV2ViUGFnZSosIGNvbnN0IFByaW50
SW5mbyYpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJpbnRPcGVyYXRpb25HdGs+IGNyZWF0ZShX
ZWJQYWdlKiwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdmlydHVhbCB+V2ViUHJpbnRPcGVyYXRp
b25HdGsoKTsKIAogICAgIFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9wcmludENvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwNWNmMTEwOGJkMDcwM2I5
OGEwNmQyNjcyMzViMDk0Y2IwMTE5NDkxLi45MWI4ZjIzNTAwODEwNmExNTZhMzVjZGFiMzgwNWI1
YTA4YWQ5NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
bGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNr
KHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZmxhZ3MpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5n
ZUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlv
biwgYm9vbCBiYXNlSXNTdGFydCkKK3N0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9zaXRp
b24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGJh
c2VJc1N0YXJ0KQogewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHJlc3VsdCA9IHBvc2l0aW9uOwpAQCAtMTIwMywxMCArMTIwMywxMCBAQCBzdGF0aWMgUGFz
c1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcAogICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+
ZG9jdW1lbnQoKSwgcmVzdWx0LCBzZWxlY3Rpb25FbmQpOwogICAgIH0KIAotICAgIHJldHVybiBy
YW5nZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJhbmdlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwgU2VsZWN0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91
bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9z
aXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7
CiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERp
cmVjdGlvbkZvcndhcmQgOiBEaXJlY3Rpb25CYWNrd2FyZDsKICAgICBTZWxlY3Rpb25EaXJlY3Rp
b24gb3Bwb3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlvbkJhY2t3YXJkIDog
RGlyZWN0aW9uRm9yd2FyZDsKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25z
dCBWaXNpCiAKICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3Jh
bnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3JkIGJv
dW5kYXJ5LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoYXRCb3VuZGFyeU9mR3Jh
bnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewpA
QCAtMTI1MSw3ICsxMjUxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3Jk
Qm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2kKICAgICBpZiAoZXh0
ZW50LmlzTnVsbCgpIHx8IGV4dGVudCA9PSBiYXNlKQogICAgICAgICBleHRlbnQgPSB3b3JkQm91
bmRhcnk7CiAgICAgaWYgKGV4dGVudC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIChiYXNlIDwgZXh0ZW50KSA/IFJhbmdl
OjpjcmVhdGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQpIDogUmFuZ2U6OmNyZWF0
ZSgqZnJhbWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZS5oCmluZGV4IDYzMzliMjIzMDY2MzhlMDJmMGYwOWYxY2ZlODcyZTE1NjNi
NzQ5YjUuLjE4N2MxZDgzMWFkYTgwMDM4YmYxNzc3OWQ2YjZiOWNlOGNkYmU5MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCkBAIC0xNjMsOSArMTYzLDkgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBLZXlmcmFtZVZhbHVlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiB2YWx1ZSkKKyAgICAgICAgS2V5ZnJhbWVWYWx1ZShS
ZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiYmIHZhbHVlKQogICAgICAgICAgICAgOiBr
ZXlUeXBlKEZpbHRlcktleVR5cGUpCi0gICAgICAgICAgICAsIGZpbHRlcih2YWx1ZSkKKyAgICAg
ICAgICAgICwgZmlsdGVyKFdURk1vdmUodmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IGIxMDAzNzA0OTAyMWUyNjgy
ZmNkOWFhYzNhMTNhMTFjOGM2Nzg3NDcuLmIyOWNhYTY2MmMyZDdhYmVjY2MwOGExNzdlYmUwNjc0
MTUzOGI0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTY1MCw4
ICs2NTAsOCBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JgogICAgIFZlY3RvcjxLZXlmcmFtZVZh
bHVlPiBrZXlmcmFtZXM7CiAgICAga2V5ZnJhbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodmFs
dWVzLnNpemUoKSk7CiAgICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGtleWZyYW1lcy51bmNoZWNrZWRBcHBlbmQoS2V5ZnJhbWVWYWx1
ZSh2YWx1ZXNbaV0pKTsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVzKQorICAgICAgICBr
ZXlmcmFtZXMudW5jaGVja2VkQXBwZW5kKEtleWZyYW1lVmFsdWUgeyB2YWx1ZS5jb3B5UmVmKCkg
fSk7CiAgICAgCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcyA9IFdURk1vdmUoa2V5ZnJhbWVz
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309967</attachid>
            <date>2017-05-12 16:41:43 -0700</date>
            <delta_ts>2017-05-12 16:44:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512164142.patch</filename>
            <type>text/plain</type>
            <size>56779</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5kZXggMWFlYzBiOTIyZWUzZWVkOWI0YTIx
ZGQ3NTYyNmE2Zjg1OGM0NjE1Zi4uOGNjNjI4YWMxNzYzZmE1Njk1ZDc0MTA1YzNlNDhlOThlODc4
NGQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0KQEAgLTQyLDcgKzQyLDcgQEAgKyAoV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKil3b3JsZAogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKW5vcm1hbFdvcmxkCiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoKkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKaW5kZXggYjFiYWFjZTk2NWY4MGY4NzkwODMzZGUzM2JkMWY3YmVh
MWVlMzRlYy4uZDNmZjI1ZmUwMmI2ZDgzNjM1OTc2OTRhYjdmODNiMzg1NjIwZWFhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFdLQnVuZGxlU2V0RGF0
YWJhc2VRdW90YShXS0J1bmRsZVJlZiBidW5kbGVSZWYsIHVpbnQ2NF90IHF1b3RhKQogCiBXS0Rh
dGFSZWYgV0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5k
bGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChidW5kbGUpLT5jcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoY29udGV4
dCwgZGF0YSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChidW5kbGUpLT5j
cmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoY29udGV4dCwgZGF0YSkubGVha1JlZigpKTsKIH0K
IAogaW50IFdLQnVuZGxlTnVtYmVyT2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWVSZWYsIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBh
Z2VIZWlnaHRJblBpeGVscykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA5NGFi
NGRhNzU4YTBmMzA1ZTZmYzg0YmY2YjljMjQ2NjQ0MWMwMDllLi45MDdiN2Q2MmE4ZThlYTQ4YzQ3
OGNlNmE1NjU5Y2E3NWUzY2RlYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBA
IC0xNzksNyArMTc5LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VDbGlja01lbnVJdGVtKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0NvbnRleHRNZW51SXRlbVJlZiBpdGUKIH0KIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY29udGV4dE1l
bnVJdGVtcyhjb25zdCBXZWJDb250ZXh0TWVudSYgY29udGV4dE1lbnUpCitzdGF0aWMgUmVmPEFQ
STo6QXJyYXk+IGNvbnRleHRNZW51SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRN
ZW51KQogewogICAgIGF1dG8gaXRlbXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCkBAIC0xOTgs
NyArMTk4LDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5Q29udGV4dE1lbnVJdGVtcyhX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBX
ZWJDb250ZXh0TWVudSogY29udGV4dE1lbnUgPSB0b0ltcGwocGFnZVJlZiktPmNvbnRleHRNZW51
KCk7CiAKLSAgICByZXR1cm4gdG9BUEkoY29udGV4dE1lbnVJdGVtcygqY29udGV4dE1lbnUpLmxl
YWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZjb250ZXh0TWVudUl0ZW1zKCpjb250ZXh0TWVu
dSkubGVha1JlZigpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjEyLDcgKzIxMiw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdl
Q29weUNvbnRleHRNZW51QXRQb2ludEluV2luZG93KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
CiAgICAgaWYgKCFjb250ZXh0TWVudSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gdG9BUEkoY29udGV4dE1lbnVJdGVtcygqY29udGV4dE1lbnUpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKCZjb250ZXh0TWVudUl0ZW1zKCpjb250ZXh0TWVudSkubGVha1JlZigp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTShw
b2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCBi
ZmVjZDMzZmFmMjVlOTk4N2I4ZTViMDkxY2RjNzJhZTc5ZGIwMjE5Li4zYzA3ZDJlMDc4MWY0YzRj
NTM5ODc5OTM4MDg0YTY5ODVhZDY2Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlT3ZlcmxheS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
RERBY3Rpb25Db250ZXh0ICphY3Rpb25Db250ZXh0ID0gKEREQWN0aW9uQ29udGV4dCAqKW1fY2xp
ZW50LmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KHRvQVBJKCZwYWdlT3ZlcmxheSksIFdL
UG9pbnRNYWtlKGxvY2F0aW9uLngoKSwgbG9jYXRpb24ueSgpKSwgJmFwaVJhbmdlLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgICAgICAgICBpZiAoYXBpUmFuZ2UpCi0gICAgICAg
ICAgICAgICAgcmFuZ2VIYW5kbGUgPSB0b0ltcGwoYXBpUmFuZ2UpLT5jb3JlUmFuZ2UoKTsKKyAg
ICAgICAgICAgICAgICByYW5nZUhhbmRsZSA9ICZ0b0ltcGwoYXBpUmFuZ2UpLT5jb3JlUmFuZ2Uo
KTsKIAogICAgICAgICAgICAgcmV0dXJuIGFjdGlvbkNvbnRleHQ7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVTY3JpcHRXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwCmluZGV4IGI3YmQ4YjMwMmIzMTcy
ZTFmZTNiYzhjYmM1MzliOGFmOTA2MjRhZTAuLmI0MDljNTlkNmQ1OTEyNTJjOWY3OGUyZjYzYjVi
MDEzNWU3ZTRhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNw
cApAQCAtNDUsNyArNDUsNyBAQCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0
V29ybGRDcmVhdGVXb3JsZCgpCiAKIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgV0tCdW5kbGVTY3Jp
cHRXb3JsZE5vcm1hbFdvcmxkKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNjcmlw
dFdvcmxkQ2xlYXJXcmFwcGVycyhXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3JsZC5jcHAKaW5kZXggZGMwOTVl
MGQ3YTkwMGI0ZDZmYzc5ZTE3NWMyYzc4MDlmM2RlZjZjMS4uOGQ0Yzk3OGJlMDM2YjBkYjFlZGZj
ZGYwNTUyMDgxODc0ZWFhMzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0U2NyaXB0
V29ybGQuY3BwCkBAIC05OSwxMCArOTksMTAgQEAgdm9pZCB3ZWJraXRTY3JpcHRXb3JsZFdpbmRv
d09iamVjdENsZWFyZWQoV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkLCBXZWJLaXRXZWJQYWcKICAg
ICBnX3NpZ25hbF9lbWl0KHdvcmxkLCBzaWduYWxzW1dJTkRPV19PQkpFQ1RfQ0xFQVJFRF0sIDAs
IHBhZ2UsIGZyYW1lKTsKIH0KIAotc3RhdGljIFdlYktpdFNjcmlwdFdvcmxkKiB3ZWJraXRTY3Jp
cHRXb3JsZENyZWF0ZShQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IHNjcmlw
dFdvcmxkKQorc3RhdGljIFdlYktpdFNjcmlwdFdvcmxkKiB3ZWJraXRTY3JpcHRXb3JsZENyZWF0
ZShSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4mJiBzY3JpcHRXb3JsZCkKIHsKICAgICBX
ZWJLaXRTY3JpcHRXb3JsZCogd29ybGQgPSBXRUJLSVRfU0NSSVBUX1dPUkxEKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9TQ1JJUFRfV09STEQsIE5VTEwpKTsKLSAgICB3b3JsZC0+cHJpdi0+c2Ny
aXB0V29ybGQgPSBzY3JpcHRXb3JsZDsKKyAgICB3b3JsZC0+cHJpdi0+c2NyaXB0V29ybGQgPSBX
VEZNb3ZlKHNjcmlwdFdvcmxkKTsKIAogICAgIEFTU0VSVCghc2NyaXB0V29ybGRzKCkuY29udGFp
bnMod29ybGQtPnByaXYtPnNjcmlwdFdvcmxkLmdldCgpKSk7CiAgICAgc2NyaXB0V29ybGRzKCku
YWRkKHdvcmxkLT5wcml2LT5zY3JpcHRXb3JsZC5nZXQoKSwgd29ybGQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhh
bmRsZS5jcHAKaW5kZXggMmE4ZjE3YTRhY2Y4NmIyNzc5MmRiZGUzN2Q3M2ZiMDViNWI2MDc2Ni4u
ZTAxMWY2MmUwM2ZjYmE3MzBkZTQxNzc1ODY5NjM1MDNhZDAzM2MyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVD
U1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25I
YW5kbGUuY3BwCkBAIC00MiwxNCArNDIsMTQgQEAgc3RhdGljIERPTUhhbmRsZUNhY2hlJiBkb21I
YW5kbGVDYWNoZSgpCiAgICAgcmV0dXJuIGNhY2hlOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlOjpnZXRPckNyZWF0ZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURl
Y2xhcmF0aW9uKQorUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlOjpnZXRPckNyZWF0ZShD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uKQogewogICAgIGlmICghc3R5bGVE
ZWNsYXJhdGlvbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBET01IYW5kbGVDYWNo
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHN0eWxlRGVjbGFyYXRp
b24sIG51bGxwdHIpOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4ocmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlOwogCiAgICAgYXV0byBzdHlsZURlY2xhcmF0aW9uSGFuZGxlID0gYWRvcHRSZWYoKm5ldyBJ
bmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoKnN0eWxlRGVjbGFyYXRpb24p
KTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5w
dHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NT
dHlsZURlY2xhcmF0aW9uSGFuZGxlLmgKaW5kZXggODRjOTNjMWVkNzQ0YWM4NjdiMzM4ZTZmNTQ0
MDBmZGYxOTliM2NmMS4uOTVkOTIwY2FiYzI4YzdmNTk0OTk3ZWQ5NjI2NWI1OWRlMzgyMTk3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHls
ZURlY2xhcmF0aW9uSGFuZGxlLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgSW5qZWN0ZWRC
dW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTU3R5
bGVEZWNsYXJhdGlvbjsKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25I
YW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OkNTU1N0eWxlRGVj
bGFyYXRpb24qKTsKKyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNs
YXJhdGlvbkhhbmRsZT4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiop
OwogICAgIHZpcnR1YWwgfkluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSgp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAppbmRleCAxYTM0YTkxNDRjN2UyODcyZjAzZDg5ZThjNmY5ZTgxOGFiN2RjNjlkLi5m
NzRhMTIxMWEyM2IzMDMxZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNTcsNDIgKzU3LDQyIEBA
IHN0YXRpYyBET01IYW5kbGVDYWNoZSYgZG9tSGFuZGxlQ2FjaGUoKQogICAgIHJldHVybiBjYWNo
ZTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgb2JqZWN0KQorUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBvYmplY3QpCiB7CiAgICAgUmFuZ2UqIHJhbmdlID0gSlNSYW5nZTo6dG9XcmFwcGVk
KHRvSlMoY29udGV4dCktPnZtKCksIHRvSlMob2JqZWN0KSk7CiAgICAgcmV0dXJuIGdldE9yQ3Jl
YXRlKHJhbmdlKTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShSYW5nZSogcmFuZ2UpCitSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6
Z2V0T3JDcmVhdGUoUmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIERPTUhhbmRsZUNhY2hlOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQocmFuZ2UsIG51bGxwdHIpOwog
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gcmFuZ2VIYW5kbGUg
PSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUocmFuZ2UpOworICAgIGF1dG8gcmFu
Z2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUoKnJhbmdlKTsKICAg
ICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gcmFuZ2VIYW5kbGUucHRyKCk7CiAgICAgcmV0dXJu
IFdURk1vdmUocmFuZ2VIYW5kbGUpOwogfQogCi1SZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKK1JlZjxJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVh
dGUoUmFuZ2UmIHJhbmdlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUocmFuZ2UpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZShSYW5nZSogcmFuZ2UpCitJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKFJhbmdlJiByYW5nZSkKICAgICA6
IG1fcmFuZ2UocmFuZ2UpCiB7CiB9CiAKIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6On5Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlKCkKIHsKLSAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZSht
X3JhbmdlLmdldCgpKTsKKyAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZShtX3JhbmdlLnB0cigp
KTsKIH0KIAotUmFuZ2UqIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSgpIGNv
bnN0CitSYW5nZSYgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y29yZVJhbmdlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9yYW5nZS5nZXQoKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBXZWJD
b3JlOjpJbnRSZWN0IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmJvdW5kaW5nUmVjdEluV2lu
ZG93Q29vcmRpbmF0ZXMoKSBjbwogICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5jb250ZW50c1Rv
V2luZG93KGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdSZWN0KSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCitSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgRG9j
dW1lbnQmIG93bmVyRG9jdW1lbnQgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCk7CiAgICAgRnJh
bWUqIGZyYW1lID0gb3duZXJEb2N1bWVudC5mcmFtZSgpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIFBh
c3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1h
Z2UoU25hcHNob3RPcHRpb25zIG9wCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsK
IAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbigqbV9yYW5nZSkpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihtX3JhbmdlKSk7CiAKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9
IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSA/IDEg
OiBmcmFtZS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIEludFJlY3QgcGFpbnRS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JhbmdlLT5hYnNvbHV0ZUJvdW5kaW5nUmVjdCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAppbmRleCA2NDdi
MWMyNDRhOTM2ZDNlN2MwOTNmZDVkN2JhNDQwMjQ0M2VhNjE3Li5mODBlMzNhYmU4MDY1MWQ5Nzkx
OGI4ZGJmYTE0OWU0NjFmNTZiYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25z
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsMjQgKzQ1LDI0IEBAIGNsYXNzIFdl
YkltYWdlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUmFuZ2VIYW5kbGU+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRP
ckNyZWF0ZShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpSYW5nZSop
OworICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZ2V0T3JDcmVh
dGUoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZik7CisgICAgc3RhdGljIFJlZlB0cjxJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOwogCiAgICAg
dmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZSgpOwogCiAgICAgUmVmPEluamVjdGVk
QnVuZGxlTm9kZUhhbmRsZT4gZG9jdW1lbnQoKTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgYm91
bmRpbmdSZWN0SW5XaW5kb3dDb29yZGluYXRlcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8V2Vi
SW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKKyAgICBSZWZQdHI8V2ViSW1h
Z2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKICAgICBTdHJpbmcgdGV4dCgpIGNv
bnN0OwogCi0gICAgV2ViQ29yZTo6UmFuZ2UqIGNvcmVSYW5nZSgpIGNvbnN0OworICAgIFdlYkNv
cmU6OlJhbmdlJiBjb3JlUmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVm
PEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOwotICAg
IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UqKTsKKyAgICBzdGF0aWMg
UmVmPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSYpOwor
ICAgIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UmKTsKIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpSYW5nZT4gbV9yYW5nZTsKKyAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IG1f
cmFuZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
aW5kZXggOTJiNmZkYjFmYTY5OTM5ZWY5ZWU1N2IzOTJmNWUzZTY3ODAwMDNmNi4uNjFkOWNjMDdj
OGU4OTBhOTMwOTgxZmM3YTg0NDk0MzNiNDExOGU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVhdGUo
Y29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQVBJOjpPYmpl
Y3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVj
dGVkQnVuZGxlOjpjcmVhdGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAgICAgYXV0
byBidW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlKHBhcmFtZXRlcnMpKTsKIApA
QCAtNTcyLDcgKzU3Miw3IEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRp
b25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzCiB9CiAKIC8vIEZJWE1F
IEdldCByaWQgb2YgdGhpcyBmdW5jdGlvbiBhbmQgbW92ZSBpdCBpbnRvIFdLQnVuZGxlLmNwcC4K
LVBhc3NSZWZQdHI8QVBJOjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZyb21V
aW50OEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCitSZWY8QVBJ
OjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUq
IGV4ZWNTdGF0ZSA9IHRvSlMoY29udGV4dCk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5
RGF0YSA9IFdlYkNvcmU6OnRvVW5zaGFyZWRVaW50OEFycmF5KGV4ZWNTdGF0ZS0+dm0oKSwgdG9K
UyhleGVjU3RhdGUsIGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAwMDA1NTBiZmYyNDFj
YzA1ZDY1NGNlOGYxMTY5ZGUyYTcyYzYzMWEwLi44ZjMzN2NjOWYzMGJiYzhkYzcwMTY4NDQ4MWM5
NWYyODE1OWE4YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSAiV0tCdW5kbGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzUsNyArNzUsNyBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgSW5qZWN0ZWRC
dW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gY3JlYXRl
KGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlh
bGl6YXRpb25Vc2VyRGF0YSk7CisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gY3Jl
YXRlKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5p
dGlhbGl6YXRpb25Vc2VyRGF0YSk7CiAKICAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKIApAQCAtMTE3
LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Np
b24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSopOwog
ICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
Ci0gICAgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRh
dGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAgICAgLy8gVXNl
ckNvbnRlbnQgQVBJCiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5Kiwg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
dHJpbmcmIHVybCwgQVBJOjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3Qs
IFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdC5jcHAKaW5kZXggZTg3OTA1YmNhMmMzZDk2ZGJjOWY5MTI1ZGVlZWI2MDg3ZGQ4Mzg2Yi4u
M2YyNjA4NGIxZTRlN2JiNWFjMDllMDYxMmMwZTdkNTdlZmVhNGI3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTM2LDEzICszNiwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAorUmVmUHRyPEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFBhZ2UqIHBhZ2Ug
PSBtX3BhZ2UtPmNvcmVQYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbTo6Y3JlYXRlKHBhZ2UtPmJhY2tGb3J3YXJkKCkuaXRlbUF0SW5kZXgoaW5k
ZXgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5o
CmluZGV4IGE0NGQwYjk2MjAwYjAyMzFlNmI5ZWE3MTFkYzA4YmJhMjQ1NzE2MGMuLjllZGFmYWFj
N2VmOTc4Mjc3ODQ3ZWFlZDdjODAwMDk5MDgxODVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC00MiwxMSArNDIsMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdChwYWdlKSk7
CiAgICAgfQogCi0gICAgdm9pZCBkZXRhY2goKSB7IG1fcGFnZSA9IDA7IH0KKyAgICB2b2lkIGRl
dGFjaCgpIHsgbV9wYWdlID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAg
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW1BdEluZGV4
KGludCkgY29uc3Q7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bT4gaXRlbUF0SW5kZXgoaW50KSBjb25zdDsKICAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0
OwogICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDQyODI3ZjZmNGZlZWUx
NTQ3ZTliNmQ4ZGU1NjAzMTRkMWM1M2QxYmQuLjE1ZTZhNTcxYjY1ZWZkNDMxNWRlOWVjODliMTM1
YjdmZDJkOTA0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW0uaApAQCAtMzksMTEgKzM5LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2Jq
ZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbT4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW0pCisg
ICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGNyZWF0
ZShSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYgaXRlbSkKICAgICB7CiAgICAgICAgIGlm
ICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbShpdGVtKSk7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShpdGVtKSkpOwogICAgIH0KIAogICAgIFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdldCgpOyB9
CkBAIC02MCw3ICs2MCw5IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpBcnJheT4gY2hpbGRyZW4o
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkgOiBtX2l0ZW0oaXRlbSkg
eyB9CisgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKFJlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiBpdGVtKQorICAgICAgICA6IG1faXRlbShXVEZNb3Zl
KGl0ZW0pKQorICAgIHsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX2l0
ZW07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCmlu
ZGV4IDgyNmQzNzIxOWJiMDZhODY3ZTZmYjE3NDU0OGM3YzA4ZTA3MzBmNTUuLjcyYWU3NzI3ZDQ1
ZTRmZGE5NzE5MzI1MjlmMjk3ZjgxNzMzNTY0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBSZWY8SW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0PiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShj
b25zdCBIaXRUZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdChoaXRUZXN0UmVzdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6Om5vZGVIYW5kbGUoKSBjb25z
dAorUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0Ojpub2RlSGFuZGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpnZXRPckNyZWF0ZShtX2hpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCkpOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKCkgY29uc3QKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6dXJsRWxl
bWVudEhhbmRsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZTo6Z2V0T3JDcmVhdGUobV9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaAppbmRleCAyNTgyYjQ3ZGRmOTlhNzdm
ODZkODRlNDgxZmM3YjRmMDUxZDkwMjcyLi4xNGUzZTY3Mzg2ZjU1NWYwZGE4N2UyMDI1OGMxN2Ri
MmExMTcwZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRN
ZWRpYVR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQmIGNvcmVIaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0
OyB9CiAKLSAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRs
ZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxF
bGVtZW50SGFuZGxlKCkgY29uc3Q7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZT4gbm9kZUhhbmRsZSgpIGNvbnN0OworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IHVybEVsZW1lbnRIYW5kbGUoKSBjb25zdDsKICAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25z
dDsKICAgICBXZWJGcmFtZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDM1NjlmZDg3NWJlODZj
OTU4NmYwZWU3YjI1MDAxM2M5N2MzYzUzZGUuLjc2ZDUwNjhmNTkyNzk5YmIyMDUyYmI4ZGRiYWUy
MDE2NWVhODgxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTk3LDEyICs5NywxMiBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWND
bGlja1R5cGUgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpzeW50aGV0aWNDbGljawog
ICAgIHJldHVybiBzeW50aGV0aWNDbGlja1R5cGVGb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnRGb3JO
YXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKIH0KIAotUmVmPEluamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVh
dGUoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NS
ZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCitSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uPiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEZvcm1TdGF0ZT4m
JiBmb3JtU3RhdGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKGZyYW1lLCBhY3Rpb24sIGZvcm1TdGF0ZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9u
LCBXVEZNb3ZlKGZvcm1TdGF0ZSkpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlKQorSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKICAg
ICA6IG1fbmF2aWdhdGlvblR5cGUobmF2aWdhdGlvbkFjdGlvbi50eXBlKCkpCiAgICAgLCBtX21v
ZGlmaWVycyhtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKQog
ICAgICwgbV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGIzNzY2ZTMyNjFhMDBl
ODE1YTllNjM1NmUyOWFlYjE1MmFhODYxYmIuLmZhNmEyYTU0OGI3NmRmNzBhYzQ1NmZiYjE2YTRm
NzcwMDQyMjE4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NSw3ICs0NSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwor
ICAgIHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUoV2Vi
RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4mJik7CiAKICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmll
cnNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICBBdG9taWNTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBtX2Rvd25sb2FkQXR0cmlidXRlOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlv
bkFjdGlvbiYsIFJlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYpOwogCiAgICAgV2ViQ29yZTo6
TmF2aWdhdGlvblR5cGUgbV9uYXZpZ2F0aW9uVHlwZTsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJz
IG1fbW9kaWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDViYTQ3Y2MzODNjZGE4MjQwMmE0N2VjOWQ5NTc3YTk1MGMwZGZmZTku
LmUyNWIwNzFiMjExOWFiNTcwNDUzNGY0NzY5NjZlMmEzMDkxNmYzMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTI2Nyw3ICsyNjcs
NyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xlYXJXaW5kb3dP
YmplY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLAogICAgIGlmICghbV9jbGllbnQuZGlkQ2xlYXJX
aW5kb3dPYmplY3RGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlk
Q2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQ
SShJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCkuZ2V0KCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUod29ybGQpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXggOWUx
MWE3NjI4ODFjMDA2NmFkYmFkODVhMGJkN2Y2NzMyNjUyMTcyOS4uYjE3ODMxZDJjN2E5NDNkYzRk
NmMzNDU1MWQzMmJiMGIyZjQ4NmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQuY3BwCkBAIC02MSwyMCArNjEsMjAgQEAgUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG4K
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKFNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCksIG5hbWUpKTsKIH0KIAotUGFzc1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNy
ZWF0ZShET01XcmFwcGVyV29ybGQmIHdvcmxkKQorUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKERPTVdyYXBwZXJXb3Js
ZCYgd29ybGQpCiB7CiAgICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
CiAgICAgICAgIHJldHVybiBub3JtYWxXb3JsZCgpOwogCiAgICAgaWYgKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQqIGV4aXN0aW5nV29ybGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkKLSAg
ICAgICAgcmV0dXJuIGV4aXN0aW5nV29ybGQ7CisgICAgICAgIHJldHVybiAqZXhpc3RpbmdXb3Js
ZDsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCh3
b3JsZCwgdW5pcXVlV29ybGROYW1lKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkLCB1bmlxdWVXb3JsZE5hbWUoKSkpOwogfQogCi1J
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3Jt
YWxXb3JsZCgpCitJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOjpub3JtYWxXb3JsZCgpCiB7Ci0gICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQqIHdvcmxkID0gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQobWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIFN0cmluZygpKSkubGVha1JlZigpOworICAgIHN0YXRpYyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgU3RyaW5nKCkpKS5sZWFr
UmVmKCk7CiAgICAgcmV0dXJuIHdvcmxkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZC5oCmluZGV4IGZlNzk2ZjZlODUzYzNiOGJkY2VkZDUzMmE0OGUyNjgzOTg2NDhl
Y2IuLjUwOTJhZTcyNTc2ZWNhMTg2YjJiNTQ4NmJkZjVmMTZkYTk2Nzk1MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5l
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGRfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00
MSw4ICs0MSw4IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUmVm
PEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShX
ZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKTsKLSAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogbm9ybWFsV29ybGQoKTsKKyAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpOworICAgIHN0
YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiBub3JtYWxXb3JsZCgpOwogCiAgICAgdmly
dHVhbCB+SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAppbmRleCAxN2QzNWM5NGEwOTFjODE2N2M1ZTdjN2ZmNzM0NThkZDliNzUxN2NiLi5hNGQ3
ZjFhOTBjYzkwMjkxYTc3MTA5ZDE2ODFmZTI0YmIzMzIwNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFRoZSBw
bHVnLWluIHRoYXQgd2UncmUgY3VycmVudGx5IGNhbGxpbmcgTlBQX05ldyBmb3IuCiBzdGF0aWMg
TmV0c2NhcGVQbHVnaW4qIGN1cnJlbnROUFBOZXdQbHVnaW47CiAKLVJlZlB0cjxOZXRzY2FwZVBs
dWdpbj4gTmV0c2NhcGVQbHVnaW46OmNyZWF0ZShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9k
dWxlPiBwbHVnaW5Nb2R1bGUpCitSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNjYXBlUGx1Z2lu
OjpjcmVhdGUoUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmIHBsdWdpbk1vZHVsZSkKIHsK
ICAgICBpZiAoIXBsdWdpbk1vZHVsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbihwbHVnaW5Nb2R1bGUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXRzY2FwZVBsdWdpbihwbHVnaW5Nb2R1bGUucmVsZWFzZU5v
bk51bGwoKSkpOwogfQogICAgIAotTmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKFBhc3NS
ZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSkKK05ldHNjYXBlUGx1Z2lu
OjpOZXRzY2FwZVBsdWdpbihSZWY8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYgcGx1Z2luTW9kdWxl
KQogICAgIDogUGx1Z2luKE5ldHNjYXBlUGx1Z2luVHlwZSkKICAgICAsIG1fbmV4dFJlcXVlc3RJ
RCgwKQotICAgICwgbV9wbHVnaW5Nb2R1bGUocGx1Z2luTW9kdWxlKQorICAgICwgbV9wbHVnaW5N
b2R1bGUoV1RGTW92ZShwbHVnaW5Nb2R1bGUpKQogICAgICwgbV9ucFdpbmRvdygpCiAgICAgLCBt
X2lzU3RhcnRlZChmYWxzZSkKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExMDIsNyArMTEwMiw3
IEBAIFNjcm9sbGJhciogTmV0c2NhcGVQbHVnaW46OnZlcnRpY2FsU2Nyb2xsYmFyKCkKIGJvb2wg
TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKIHsKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICByZXR1cm4gbV9wbHVnaW5Nb2R1bGUgJiYgbV9wbHVnaW5Nb2R1bGUt
PnBsdWdpblF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1aXJrczo6U3VwcG9ydHNTbmFwc2hvdHRp
bmcpOworICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMo
UGx1Z2luUXVpcmtzOjpTdXBwb3J0c1NuYXBzaG90dGluZyk7CiAjZW5kaWYKICAgICByZXR1cm4g
ZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDc4MjI3ZjVmOTRmNGFjNzRkYTA1
NTYwZWI0NjQyNzZlNDMxZGE0YTkuLjA3YzhiMDg2YWI4OWVkOTdhZjQ0MjI0OWY4YTc4MTJmY2Zj
YjllOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIE5l
dHNjYXBlUGx1Z2luVW5peDsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2lu
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVhdGUoUGFz
c1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4pOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW4+IGNyZWF0ZShSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYpOwogICAgIHZp
cnR1YWwgfk5ldHNjYXBlUGx1Z2luKCk7CiAKICAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1
Z2luPiBmcm9tTlBQKE5QUCk7CkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0
cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKTsKKyAgICBleHBsaWNpdCBOZXRz
Y2FwZVBsdWdpbihSZWY8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYpOwogCiAgICAgdm9pZCBjYWxs
U2V0V2luZG93KCk7CiAgICAgdm9pZCBjYWxsU2V0V2luZG93SW52aXNpYmxlKCk7CkBAIC0yODYs
NyArMjg2LDcgQEAgcHJpdmF0ZToKICAgICBTdHJlYW1zTWFwIG1fc3RyZWFtczsKICAgICBIYXNo
TWFwPHZvaWQqLCBzdGQ6OnBhaXI8UmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiwgU3RyaW5n
Pj4gbV9yZWRpcmVjdHM7CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1
Z2luTW9kdWxlOworICAgIFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gbV9wbHVnaW5Nb2R1bGU7
CiAgICAgTlBQX3QgbV9ucHA7CiAgICAgTlBXaW5kb3cgbV9ucFdpbmRvdzsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaAppbmRleCBmNjMzOTcwMWU2NjAxMDllMjkxYThmYzBjNWI5MWE0OTg5YTM0ZWJl
Li5hZmRhMTcxMTNhNjU3M2I0MGY1ZTQyZGRkMDMyNDJkOWVhZGQ1ZmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFu
bm90YXRpb24uaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBQREZQbHVnaW47CiAKIGNsYXNzIFBE
RlBsdWdpbkFubm90YXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQREZQbHVnaW5Bbm5vdGF0aW9u
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4g
Y3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiop
OworICAgIHN0YXRpYyBSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90
YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOwogICAgIHZpcnR1YWwg
flBERlBsdWdpbkFubm90YXRpb24oKTsKIAogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQuZ2V0KCk7IH0KQEAgLTc1LDcgKzc1LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCopOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVh
dGVBbm5vdGF0aW9uRWxlbWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpFbGVt
ZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpID0gMDsKIAogICAgIGNsYXNzIFBERlBsdWdp
bkFubm90YXRpb25FdmVudExpc3RlbmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIg
ewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA0MjJiZGFjNDliNGY4
ODFjYWZhMjgzNWI3MTYyYmRlOGI2MWI5YjFjLi43NGRjYmM4Mzc5MTRjNDM3NzJkYWFkNzU5Y2Ux
YWZiZDc3MDY5YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC01MiwxNCArNTIsMTQg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVBh
c3NSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gUERGUGx1Z2luQW5ub3RhdGlvbjo6Y3JlYXRl
KFBERkFubm90YXRpb24gKmFubm90YXRpb24sIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJD
b250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikKK1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9u
PiBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwg
UERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2lu
KQogewogICAgIGlmIChbYW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRpb25UZXh0
V2lkZ2V0Q2xhc3MoKV0pCiAgICAgICAgIHJldHVybiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6
Y3JlYXRlKGFubm90YXRpb24sIHBkZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKTsKICAgICBpZiAo
W2Fubm90YXRpb24gaXNLaW5kT2ZDbGFzczpwZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3Mo
KV0pCiAgICAgICAgIHJldHVybiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGUoYW5u
b3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pOwogCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNo
KEVsZW1lbnQqIHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKaW5kZXgg
NmFmODdjZDdmOTJiNjgwZjEyZTQyNzgwM2M4NjYyZWM1ZWUyYmI5NC4uMGY3Njc1YzVkMjMxZDU3
ZDkyYmQ2Mjc5MzZlOWUwMjRkMmUxYzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0
aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFz
c1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJy
aWRlOworICAgIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgp
IG92ZXJyaWRlOwogCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2lj
ZUFubm90YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KaW5kZXggMjczNTAzMjUyZjAwNjhmYmFmZGRkYmYz
ZmQ5ZWUyMjRiNmY2Y2Y1Yy4uZGJlNWFlOTc1MWZlZGM4YzhkZjIyMTMwZjRiYWUzYTAzOTFkYmRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNvbW1pdCgpCiAgICAgUERGUGx1Z2lu
QW5ub3RhdGlvbjo6Y29tbWl0KCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQorUmVmPEVsZW1lbnQ+
IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKIHsK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBwYXJlbnQoKS0+ZG9jdW1lbnQoKTsKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC03NCwxMyArNzQsMTMgQEAgUGFzc1JlZlB0cjxFbGVt
ZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgp
CiAgICAgUERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbiA9IHRoaXMt
PmNob2ljZUFubm90YXRpb24oKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAotICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzZWxlY3RU
YWcsIGZhbHNlKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHNl
bGVjdFRhZywgZmFsc2UpOwogCi0gICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0
YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKyAgICBhdXRvJiBzdHls
ZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudC5nZXQoKSk7CiAKICAg
ICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/Ci0gICAgc3R5
bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xv
ckZyb21OU0NvbG9yKGNob2ljZUFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxpemVkKCkpOwot
ICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250
RmFtaWx5LCBjaG9pY2VBbm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CisgICAgc3R5bGVkRWxl
bWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yRnJvbU5T
Q29sb3IoY2hvaWNlQW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgc3R5
bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwg
Y2hvaWNlQW5ub3RhdGlvbi5mb250LmZhbWlseU5hbWUpOwogCiAgICAgTlNBcnJheSAqY2hvaWNl
cyA9IGNob2ljZUFubm90YXRpb24uY2hvaWNlczsKICAgICBOU1N0cmluZyAqc2VsZWN0ZWRDaG9p
Y2UgPSBjaG9pY2VBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlOwpAQCAtOTMsNyArOTMsNyBAQCBQYXNz
UmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRp
b25FbGVtZW50KCkKICAgICAgICAgaWYgKGNob2ljZSA9PSBzZWxlY3RlZENob2ljZSkKICAgICAg
ICAgICAgIGNob2ljZU9wdGlvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihz
ZWxlY3RlZEF0dHIsIEF0b21pY1N0cmluZygic2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSk7CiAKLSAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBwZW5kQ2hpbGQo
Y2hvaWNlT3B0aW9uKTsKKyAgICAgICAgc3R5bGVkRWxlbWVudC5hcHBlbmRDaGlsZChjaG9pY2VP
cHRpb24pOwogICAgIH0KIAogICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3Jk
RmllbGQuaAppbmRleCAxNjMyNTBhZGJjNTgwNThlZDNiMDZmYjViMDk1YjA2MTRhMWZlMjgwLi4z
NmUyZTgyYjNiMjgwYThmNjFiYWE3YzUyNzViOWRhNzQ3MzhiNGM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBh
c3N3b3JkRmllbGQuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAK
LSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25F
bGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50
Kikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IDBhOTA3
MDc2NDY3NjBhOWQzYmVkODY3NjEzYTFmYzYxM2NjMDg0NmQuLjY3Nzg0ODlkOGMwMWM2ZTIzN2Nl
NWQ2NGY1YzcyMTlhNDI5MDM4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAg
LTUzLDkgKzUzLDkgQEAgUERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBhc3N3b3Jk
RmllbGQoKQogICAgIGVsZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
a2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEVs
ZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkK
K1JlZjxFbGVtZW50PiBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBQ
REZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKICAgICBl
bGVtZW50LT5zZXRBdHRyaWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwogICAgIGVsZW1lbnQt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVy
KCksIGZhbHNlKTsKICAgICByZXR1cm4gZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRp
b24uaAppbmRleCBhOGU2MmU5Y2M1MTY1OGFiZTU1NThmOWMwZDcyZjhjMDFjZWQ5ZTE4Li4wY2Fl
NmYwMGZlZTcwMTE4N2MyNDc0YThlN2UyMThhMWMyYTI3NThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5oCkBAIC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQog
Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpIG92ZXJyaWRlOworICAgIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9u
RWxlbWVudCgpIG92ZXJyaWRlOwogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5UZXh0QW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KaW5kZXggYmNmOWM1NWVhMjMzMzMwMjU2
ZTYxOWU1ZWU1YmRhZGI3NjcxMmUzZC4uNzEwOTQ1ZWFkMzExNzE0ZTNiZjZhNjI5YTk5NDA2ZjZi
MzM4NzMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC03OSwxMCArNzks
OCBAQCBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6flBERlBsdWdpblRleHRBbm5vdGF0aW9uKCkK
ICAgICBlbGVtZW50KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+
IFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitSZWY8
RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkKIHsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudDsKLQogICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IHBhcmVudCgpLT5kb2N1bWVudCgpOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFy
YXRpb25zIgpAQCAtOTAsMjcgKzg4LDIzIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2lu
VGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKICAgICBib29sIGlzTXVsdGlsaW5lID0gdGV4dEFubm90YXRpb24uaXNN
dWx0aWxpbmU7CiAKLSAgICBpZiAoaXNNdWx0aWxpbmUpCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KHRleHRhcmVhVGFnLCBmYWxzZSk7Ci0gICAgZWxzZQotICAgICAg
ICBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpbnB1dFRhZywgZmFsc2UpOwotCisg
ICAgYXV0byBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpc011bHRpbGluZSA/IHRl
eHRhcmVhVGFnIDogaW5wdXRUYWcsIGZhbHNlKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsK
IAotICAgIFN0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRF
bGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRvd25j
YXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQuZ2V0KCkpOwogCiAgICAgaWYgKCF0ZXh0QW5ub3Rh
dGlvbikKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTogTWF0Y2ggZm9u
dCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKHRleHRBbm5v
dGF0aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRpb24u
Zm9udC5mYW1pbHlOYW1lKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdu
bWVudCh0ZXh0QW5ub3RhdGlvbi5hbGlnbm1lbnQpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcih0ZXh0
QW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5z
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRp
b24uZm9udC5mYW1pbHlOYW1lKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxp
Z25tZW50KHRleHRBbm5vdGF0aW9uLmFsaWdubWVudCkpOwogCiAgICAgaWYgKGlzTXVsdGlsaW5l
KQotICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50PihzdHlsZWRFbGVtZW50KS0+
c2V0VmFsdWUodGV4dEFubm90YXRpb24uc3RyaW5nVmFsdWUpOworICAgICAgICBkb3duY2FzdDxI
VE1MVGV4dEFyZWFFbGVtZW50PihzdHlsZWRFbGVtZW50KS5zZXRWYWx1ZSh0ZXh0QW5ub3RhdGlv
bi5zdHJpbmdWYWx1ZSk7CiAgICAgZWxzZQotICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUodGV4dEFubm90YXRpb24uc3RyaW5nVmFsdWUp
OworICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihzdHlsZWRFbGVtZW50KS5zZXRW
YWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7CiAKICAgICByZXR1cm4gZWxlbWVudDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCA4NDZlOGJkZmJlOTNk
MTZhMjgxYmJmMmFhYzNjMTFiNzZjZDMyMWI3Li4xYzg2YTgwMDZkYmUyYWFjNDc1MDhmYTdhNzQ4
MDkwN2M2M2M1NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiwgdW5zaWduZWQ+CiAKIHN0YXRpYyBXb3JsZE1hcCYg
d29ybGRNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFwKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4geyB7IDEsIHN0
ZDo6bWFrZV9wYWlyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEp
IH0gfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAoc3RkOjppbml0
aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgMSwgc3RkOjptYWtl
X3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEpIH0gfSk7
CiAKICAgICByZXR1cm4gbWFwOwogfQpAQCAtMjA4LDkgKzIwOCw5IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYKICNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogY2xhc3MgV2ViVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZXNz
YWdlSGFuZGxlckRlc2NyaXB0b3IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4gY3JlYXRlKFdlYlVzZXJDb250ZW50
Q29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVm
PFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eT4gY3JlYXRlKFdlYlVzZXJDb250
ZW50Q29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgdWludDY0X3QgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclBy
b3h5KGNvbnRyb2xsZXIsIG5hbWUsIHdvcmxkLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShjb250
cm9sbGVyLCBuYW1lLCB3b3JsZCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbQppbmRleCA1ZjQ1NjU0ZWY3YjQwMjg2YmJkZWFiNThmMmUyZTJjMDg5OTY5
ZWU3Li5lNTAwN2M5Mzg4NDYyZmNkNzQwMjY0MmYzZWNlZTM0YWY3MmI5ZjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTU5LDcgKzU5LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gY29udmVydEltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKK3N0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgRnJhbWUmIGZyYW1lKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBT
aGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGE7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29u
c3QgSW4KIAogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpzYXZlZENv
bnRleHQuZ2V0KCldOwogCi0gICAgcmV0dXJuIFdURk1vdmUoYml0bWFwKTsKKyAgICByZXR1cm4g
Yml0bWFwOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBl
MTE3ODI1NDkzNGFhNTBkNDhlMmY3YWYzNDU1YjJjMzUyZTRiMzEuLjhmZTMwMmE5ZmZlMzA1NmJj
MTVkMzEyOGUyZDAxYzdiNGU1MzkwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU3OTMsMTQgKzU3OTMsMTQgQEAgdm9pZCBXZWJQYWdl
OjphZGRVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVu
dEluamVjdGVkRnIKIHsKICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHR7IHNvdXJj
ZSwgV2ViQ29yZTo6YmxhbmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4o
KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAotICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyU2NyaXB0KCpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3Jt
YWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJv
bGxlci0+YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3Js
ZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjphZGRVc2VyU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsKICAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1
c2VyU3R5bGVTaGVldHsgc291cmNlLCBXZWJDb3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5n
PigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVs
IH07CiAKLSAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQoKklu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxl
U2hlZXQpKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5
bGVTaGVldCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggMWE1ZTEwMmVjNjM0OTM5NTZlMjA2ZjdlNmIz
NWMzNWRiZjQzN2Q1NC4uYzhjOTNiMmI5MDU4N2RjMDY5NmZjNWRhNmJhYzQ0MDIzYTM3NTFjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBzdHJ1Y3Qg
UHJpbnRQYWdlc0RhdGEgewogICAgIGJvb2wgaXNWYWxpZCA6IDE7CiB9OwogCi1QYXNzUmVmUHRy
PFdlYlByaW50T3BlcmF0aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBh
Z2UqIHBhZ2UsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQorUmVmUHRyPFdlYlByaW50T3Bl
cmF0aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQogewogI2lmIEhBVkUoR1RLX1VOSVhfUFJJTlRJTkcp
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcmludE9wZXJhdGlvbkd0a1VuaXgocGFnZSwg
cHJpbnRJbmZvKSk7CkBAIC0zODgsNyArMzg4LDcgQEAgUGFzc1JlZlB0cjxXZWJQcmludE9wZXJh
dGlvbkd0az4gV2ViUHJpbnRPcGVyYXRpb25HdGs6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBjb24K
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShwcmludElu
Zm8pOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRP
cGVyYXRpb25HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuaAppbmRleCBmNWZlYzEwNmNhMjc5NGI1Njc1NjE4NTNmYTgzMTE0
NjE5MDUxYzQ0Li43NDNjYzJjZTUyNTg5N2QxOTA3YjgyZWJmYjI0MTIzZDgyMjMwNDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQcmlu
dEluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3Ry
dWN0IF9HdGtQcmludFNldHRpbmdzIEd0a1ByaW50U2V0dGluZ3M7CkBAIC00OCw3ICs0OCw3IEBA
IGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViUHJpbnRPcGVyYXRpb25HdGs+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gY3JlYXRlKFdlYlBhZ2UqLCBjb25zdCBQcmlu
dEluZm8mKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBjcmVhdGUo
V2ViUGFnZSosIGNvbnN0IFByaW50SW5mbyYpOwogICAgIHZpcnR1YWwgfldlYlByaW50T3BlcmF0
aW9uR3RrKCk7CiAKICAgICBXZWJDb3JlOjpQcmludENvbnRleHQqIHByaW50Q29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpbnRDb250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDVjZjExMDhiZDA3MDNi
OThhMDZkMjY3MjM1YjA5NGNiMDExOTQ5MS4uOTFiOGYyMzUwMDgxMDZhMTU2YTM1Y2RhYjM4MDVi
NWEwOGFkOTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBXZWJQYWdlOjpz
ZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFy
aXR5LCB1aW4KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFj
ayhwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGZsYWdzKSwgY2FsbGJhY2tJRCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFu
Z2VGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRp
b24sIGJvb2wgYmFzZUlzU3RhcnQpCitzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvc2l0
aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBi
YXNlSXNTdGFydCkKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3Np
dGlvbiByZXN1bHQgPSBwb3NpdGlvbjsKQEAgLTEyMDMsMTAgKzEyMDMsMTAgQEAgc3RhdGljIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHAKICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUt
PmRvY3VtZW50KCksIHJlc3VsdCwgc2VsZWN0aW9uRW5kKTsKICAgICB9CiAKLSAgICByZXR1cm4g
cmFuZ2UucmVsZWFzZSgpOworICAgIHJldHVybiByYW5nZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJv
dW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBv
c2l0aW9uLCBib29sIGJhc2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQog
ewogICAgIFNlbGVjdGlvbkRpcmVjdGlvbiBzYW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBE
aXJlY3Rpb25Gb3J3YXJkIDogRGlyZWN0aW9uQmFja3dhcmQ7CiAgICAgU2VsZWN0aW9uRGlyZWN0
aW9uIG9wcG9zaXRlRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJlY3Rpb25CYWNrd2FyZCA6
IERpcmVjdGlvbkZvcndhcmQ7CkBAIC0xMjE2LDcgKzEyMTYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29u
c3QgVmlzaQogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdy
YW51bGFyaXR5LCBzYW1lRGlyZWN0aW9uKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBi
b3VuZGFyeS4gTGVhdmUgc2VsZWN0aW9uIHdoZXJlIGl0IGlzLgotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdy
YW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsK
QEAgLTEyNTEsNyArMTI1MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUF0V29y
ZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpCiAgICAgaWYgKGV4
dGVudC5pc051bGwoKSB8fCBleHRlbnQgPT0gYmFzZSkKICAgICAgICAgZXh0ZW50ID0gd29yZEJv
dW5kYXJ5OwogICAgIGlmIChleHRlbnQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiAoYmFzZSA8IGV4dGVudCkgPyBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0ZW50KSA6IFJhbmdlOjpjcmVh
dGUoKmZyYW1lLT5kb2N1bWVudCgpLCBleHRlbnQsIGJhc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUuaAppbmRleCA2MzM5YjIyMzA2NjM4ZTAyZjBmMDlmMWNmZTg3MmUxNTYz
Yjc0OWI1Li4xODdjMWQ4MzFhZGE4MDAzOGJmMTc3NzlkNmI2YjljZThjZGJlOTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtMTYzLDkgKzE2Myw5IEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgS2V5ZnJhbWVWYWx1ZShQYXNzUmVmUHRy
PFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4gdmFsdWUpCisgICAgICAgIEtleWZyYW1lVmFsdWUo
UmVmUHRyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbj4mJiB2YWx1ZSkKICAgICAgICAgICAgIDog
a2V5VHlwZShGaWx0ZXJLZXlUeXBlKQotICAgICAgICAgICAgLCBmaWx0ZXIodmFsdWUpCisgICAg
ICAgICAgICAsIGZpbHRlcihXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQppbmRleCBiMTAwMzcwNDkwMjFlMjY4
MmZjZDlhYWMzYTEzYTExYzhjNjc4NzQ3Li5iMjljYWE2NjJjMmQ3YWJlY2NjMDhhMTc3ZWJlMDY3
NDE1MzhiNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC02NTAs
OCArNjUwLDggQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYKICAgICBWZWN0b3I8S2V5ZnJhbWVW
YWx1ZT4ga2V5ZnJhbWVzOwogICAgIGtleWZyYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHZh
bHVlcy5zaXplKCkpOwogICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgKytpKQotICAgICAgICBrZXlmcmFtZXMudW5jaGVja2VkQXBwZW5kKEtleWZyYW1lVmFs
dWUodmFsdWVzW2ldKSk7CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykKKyAgICAgICAg
a2V5ZnJhbWVzLnVuY2hlY2tlZEFwcGVuZChLZXlmcmFtZVZhbHVlIHsgdmFsdWUuY29weVJlZigp
IH0pOwogICAgIAogICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXMgPSBXVEZNb3ZlKGtleWZyYW1l
cyk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309968</attachid>
            <date>2017-05-12 16:44:11 -0700</date>
            <delta_ts>2017-05-12 17:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512164410.patch</filename>
            <type>text/plain</type>
            <size>58368</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElX
ZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5oCmluZGV4
IDgzNzU3NzdkYjgwZmUwN2VhYzgzNDkzMDMzYmQxODY0YWJhYzdhNzEuLjcxZGUyOGJkYTc0ZDdm
MDM0ZmI5MmM2ZjI4MjRmZWEzOWUyY2Y5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFy
Y2hpdmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJBcmNo
aXZlPiBjcmVhdGUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFJlZlB0cjxBUEk6
OkFycmF5PiYmIHN1YnJlc291cmNlcywgUmVmUHRyPEFQSTo6QXJyYXk+JiYgc3ViZnJhbWVBcmNo
aXZlcyk7CiAgICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlPiBjcmVhdGUoQVBJOjpEYXRhKik7CiAg
ICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU+JiYpOwotICAgIHN0YXRpYyBSZWY8V2ViQXJjaGl2ZT4gY3JlYXRlKFdlYkNvcmU6
OlJhbmdlKik7CisgICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlPiBjcmVhdGUoV2ViQ29yZTo6UmFu
Z2UmKTsKIAogICAgIFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlKCk7CiAgICAgQVBJ
OjpBcnJheSogc3VicmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZl
Lm1tCmluZGV4IGYyZjBmZTAxNzFmOWUzMzMxNDQ3ZDM2ZDBhNDdjNmRiZTAxYTIzMmUuLmY2MTVm
NGNlNzZlZDU2OGIyYTZlOWMyYTExNDA5ZDdhYTFmYWRjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElXZWJBcmNoaXZlLm1tCkBAIC01Myw5ICs1Myw5IEBAIFJlZjxXZWJBcmNoaXZlPiBXZWJB
cmNoaXZlOjpjcmVhdGUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+JiYgbGVnYWN5V2ViQXJjaGl2
ZSkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlKGxlZ2FjeVdlYkFyY2hpdmUu
cmVsZWFzZU5vbk51bGwoKSkpOwogfQogCi1SZWY8V2ViQXJjaGl2ZT4gV2ViQXJjaGl2ZTo6Y3Jl
YXRlKFJhbmdlKiByYW5nZSkKK1JlZjxXZWJBcmNoaXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoUmFu
Z2UmIHJhbmdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmUoTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKHJhbmdlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkFyY2hpdmUoTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCZyYW5nZSkpKTsKIH0KIAogV2ViQXJj
aGl2ZTo6V2ViQXJjaGl2ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgUmVmUHRy
PEFQSTo6QXJyYXk+JiYgc3VicmVzb3VyY2VzLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBzdWJmcmFt
ZUFyY2hpdmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5TY3JpcHRXb3JsZC5tbQppbmRleCAxYWVjMGI5MjJlZTNlZWQ5YjRhMjFkZDc1NjI2
YTZmODU4YzQ2MTVmLi44Y2M2MjhhYzE3NjNmYTU2OTVkNzQxMDVjM2U0OGU5OGU4Nzg0ZDYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5T
Y3JpcHRXb3JsZC5tbQpAQCAtNDIsNyArNDIsNyBAQCArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZCAqKXdvcmxkCiAKICsgKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopbm9y
bWFsV29ybGQKIHsKLSAgICByZXR1cm4gd3JhcHBlcigqSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZDo6bm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZDo6bm9ybWFsV29ybGQoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcAppbmRleCBiMWJhYWNlOTY1ZjgwZjg3OTA4MzNkZTMzYmQxZjdiZWExZWUzNGVj
Li5kM2ZmMjVmZTAyYjZkODM2MzU5NzY5NGFiN2Y4M2IzODU2MjBlYWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgV0tCdW5kbGVTZXREYXRhYmFzZVF1
b3RhKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgdWludDY0X3QgcXVvdGEpCiAKIFdLRGF0YVJlZiBX
S0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGJ1bmRsZSktPmNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBkYXRh
KS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGJ1bmRsZSktPmNyZWF0ZVdl
YkRhdGFGcm9tVWludDhBcnJheShjb250ZXh0LCBkYXRhKS5sZWFrUmVmKCkpOwogfQogCiBpbnQg
V0tCdW5kbGVOdW1iZXJPZlBhZ2VzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZVJlZiwgZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBkb3VibGUgcGFnZUhlaWdo
dEluUGl4ZWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDk0YWI0ZGE3NThh
MGYzMDVlNmZjODRiZjZiOWMyNDY2NDQxYzAwOWUuLjkwN2I3ZDYyYThlOGVhNDhjNDc4Y2U2YTU2
NTljYTc1ZTNjZGVhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTE3OSw3
ICsxNzksNyBAQCB2b2lkIFdLQnVuZGxlUGFnZUNsaWNrTWVudUl0ZW0oV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYsIFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZQogfQogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCi1zdGF0aWMgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjb250ZXh0TWVudUl0ZW1z
KGNvbnN0IFdlYkNvbnRleHRNZW51JiBjb250ZXh0TWVudSkKK3N0YXRpYyBSZWY8QVBJOjpBcnJh
eT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBXZWJDb250ZXh0TWVudSYgY29udGV4dE1lbnUpCiB7
CiAgICAgYXV0byBpdGVtcyA9IGNvbnRleHRNZW51Lml0ZW1zKCk7CiAKQEAgLTE5OCw3ICsxOTgs
NyBAQCBXS0FycmF5UmVmIFdLQnVuZGxlUGFnZUNvcHlDb250ZXh0TWVudUl0ZW1zKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmKQogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIFdlYkNvbnRl
eHRNZW51KiBjb250ZXh0TWVudSA9IHRvSW1wbChwYWdlUmVmKS0+Y29udGV4dE1lbnUoKTsKIAot
ICAgIHJldHVybiB0b0FQSShjb250ZXh0TWVudUl0ZW1zKCpjb250ZXh0TWVudSkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gdG9BUEkoJmNvbnRleHRNZW51SXRlbXMoKmNvbnRleHRNZW51KS5sZWFr
UmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yMTIsNyArMjEyLDcgQEAgV0tBcnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5Q29u
dGV4dE1lbnVBdFBvaW50SW5XaW5kb3coV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFcKICAgICBp
ZiAoIWNvbnRleHRNZW51KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB0
b0FQSShjb250ZXh0TWVudUl0ZW1zKCpjb250ZXh0TWVudSkubGVha1JlZigpKTsKKyAgICByZXR1
cm4gdG9BUEkoJmNvbnRleHRNZW51SXRlbXMoKmNvbnRleHRNZW51KS5sZWFrUmVmKCkpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocGFnZVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHBvaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IGJmZWNkMzNm
YWYyNWU5OTg3YjhlNWIwOTFjZGM3MmFlNzlkYjAyMTkuLjNjMDdkMmUwNzgxZjRjNGM1Mzk4Nzk5
MzgwODRhNjk4NWFkNjZjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBEREFjdGlv
bkNvbnRleHQgKmFjdGlvbkNvbnRleHQgPSAoRERBY3Rpb25Db250ZXh0ICopbV9jbGllbnQuYWN0
aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQodG9BUEkoJnBhZ2VPdmVybGF5KSwgV0tQb2ludE1h
a2UobG9jYXRpb24ueCgpLCBsb2NhdGlvbi55KCkpLCAmYXBpUmFuZ2UsIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChhcGlSYW5nZSkKLSAgICAgICAgICAgICAg
ICByYW5nZUhhbmRsZSA9IHRvSW1wbChhcGlSYW5nZSktPmNvcmVSYW5nZSgpOworICAgICAgICAg
ICAgICAgIHJhbmdlSGFuZGxlID0gJnRvSW1wbChhcGlSYW5nZSktPmNvcmVSYW5nZSgpOwogCiAg
ICAgICAgICAgICByZXR1cm4gYWN0aW9uQ29udGV4dDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNj
cmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXggYjdiZDhiMzAyYjMxNzJlMWZlM2Jj
OGNiYzUzOWI4YWY5MDYyNGFlMC4uYjQwOWM1OWQ2ZDU5MTI1MmM5Zjc4ZTJmNjNiNWIwMTM1ZTdl
NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgV0tCdW5kbGVTY3JpcHRXb3JsZENy
ZWF0ZVdvcmxkKCkKIAogV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiBXS0J1bmRsZVNjcmlwdFdvcmxk
Tm9ybWFsV29ybGQoKQogewotICAgIHJldHVybiB0b0FQSShJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkOjpub3JtYWxXb3JsZCgpKTsKKyAgICByZXR1cm4gdG9BUEkoJkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkpOwogfQogCiB2b2lkIFdLQnVuZGxlU2NyaXB0V29ybGRD
bGVhcldyYXBwZXJzKFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgc2NyaXB0V29ybGRSZWYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
V2ViS2l0U2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAppbmRleCBkYzA5NWUwZDdhOTAw
YjRkNmZjNzllMTc1YzJjNzgwOWYzZGVmNmMxLi44ZDRjOTc4YmUwMzZiMGRiMWVkZmNkZjA1NTIw
ODE4NzRlYWEzNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRTY3JpcHRXb3JsZC5j
cHAKQEAgLTk5LDEwICs5OSwxMCBAQCB2b2lkIHdlYmtpdFNjcmlwdFdvcmxkV2luZG93T2JqZWN0
Q2xlYXJlZChXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBhZwogICAgIGdfc2ln
bmFsX2VtaXQod29ybGQsIHNpZ25hbHNbV0lORE9XX09CSkVDVF9DTEVBUkVEXSwgMCwgcGFnZSwg
ZnJhbWUpOwogfQogCi1zdGF0aWMgV2ViS2l0U2NyaXB0V29ybGQqIHdlYmtpdFNjcmlwdFdvcmxk
Q3JlYXRlKFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gc2NyaXB0V29ybGQp
CitzdGF0aWMgV2ViS2l0U2NyaXB0V29ybGQqIHdlYmtpdFNjcmlwdFdvcmxkQ3JlYXRlKFJlZjxJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiYmIHNjcmlwdFdvcmxkKQogewogICAgIFdlYktpdFNj
cmlwdFdvcmxkKiB3b3JsZCA9IFdFQktJVF9TQ1JJUFRfV09STEQoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1NDUklQVF9XT1JMRCwgTlVMTCkpOwotICAgIHdvcmxkLT5wcml2LT5zY3JpcHRXb3Js
ZCA9IHNjcmlwdFdvcmxkOworICAgIHdvcmxkLT5wcml2LT5zY3JpcHRXb3JsZCA9IFdURk1vdmUo
c2NyaXB0V29ybGQpOwogCiAgICAgQVNTRVJUKCFzY3JpcHRXb3JsZHMoKS5jb250YWlucyh3b3Js
ZC0+cHJpdi0+c2NyaXB0V29ybGQuZ2V0KCkpKTsKICAgICBzY3JpcHRXb3JsZHMoKS5hZGQod29y
bGQtPnByaXYtPnNjcmlwdFdvcmxkLmdldCgpLCB3b3JsZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0
eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmNw
cAppbmRleCAyYThmMTdhNGFjZjg2YjI3NzkyZGJkZTM3ZDczZmIwNWI1YjYwNzY2Li5lMDExZjYy
ZTAzZmNiYTczMGRlNDE3NzU4Njk2MzUwM2FkMDMzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxl
RGVjbGFyYXRpb25IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5j
cHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBzdGF0aWMgRE9NSGFuZGxlQ2FjaGUmIGRvbUhhbmRsZUNh
Y2hlKCkKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVD
U1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRp
b25IYW5kbGU6OmdldE9yQ3JlYXRlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRGVjbGFyYXRp
b24pCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPiBJbmpl
Y3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU6OmdldE9yQ3JlYXRlKENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlRGVjbGFyYXRpb24pCiB7CiAgICAgaWYgKCFzdHlsZURlY2xhcmF0
aW9uKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIERPTUhhbmRsZUNhY2hlOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQoc3R5bGVEZWNsYXJhdGlvbiwgbnVs
bHB0cik7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIFBhc3NS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlPihyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAK
ICAgICBhdXRvIHN0eWxlRGVjbGFyYXRpb25IYW5kbGUgPSBhZG9wdFJlZigqbmV3IEluamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSgqc3R5bGVEZWNsYXJhdGlvbikpOwogICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uSGFuZGxlLnB0cigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVj
bGFyYXRpb25IYW5kbGUuaAppbmRleCA4NGM5M2MxZWQ3NDRhYzg2N2IzMzhlNmY1NDQwMGZkZjE5
OWIzY2YxLi45NWQ5MjBjYWJjMjhjN2Y1OTQ5OTdlZDk2MjY1YjU5ZGUzODIxOTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFy
YXRpb25IYW5kbGUuaApAQCAtMjcsOCArMjcsOCBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGVfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NTdHlsZURlY2xh
cmF0aW9uOwpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZT4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlv
biopOworICAgIHN0YXRpYyBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9u
SGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKik7CiAgICAg
dmlydHVhbCB+SW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlKCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CmluZGV4IDFhMzRhOTE0NGM3ZTI4NzJmMDNkODllOGM2ZjllODE4YWI3ZGM2OWQuLmY3NGExMjEx
YTIzYjMwMzFlMzc2Y2MzN2YxNmNhM2YxMzAyNGY1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9N
L0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC01Nyw0MiArNTcsNDIgQEAgc3RhdGlj
IERPTUhhbmRsZUNhY2hlJiBkb21IYW5kbGVDYWNoZSgpCiAgICAgcmV0dXJuIGNhY2hlOwogfQog
Ci1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU6OmdldE9yQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBv
YmplY3QpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IG9iamVjdCkKIHsKICAgICBSYW5nZSogcmFuZ2UgPSBKU1JhbmdlOjp0b1dyYXBwZWQodG9KUyhj
b250ZXh0KS0+dm0oKSwgdG9KUyhvYmplY3QpKTsKICAgICByZXR1cm4gZ2V0T3JDcmVhdGUocmFu
Z2UpOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKFJhbmdlKiByYW5nZSkKK1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNy
ZWF0ZShSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgRE9NSGFuZGxlQ2FjaGU6OkFkZFJlc3Vs
dCByZXN1bHQgPSBkb21IYW5kbGVDYWNoZSgpLmFkZChyYW5nZSwgbnVsbHB0cik7CiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CisgICAgICAgIHJldHVy
biByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgYXV0byByYW5nZUhhbmRsZSA9IEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZShyYW5nZSk7CisgICAgYXV0byByYW5nZUhhbmRs
ZSA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSgqcmFuZ2UpOwogICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSByYW5nZUhhbmRsZS5wdHIoKTsKICAgICByZXR1cm4gV1RGTW92
ZShyYW5nZUhhbmRsZSk7CiB9CiAKLVJlZjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUoUmFuZ2UqIHJhbmdlKQorUmVmPEluamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZShSYW5n
ZSYgcmFuZ2UpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZShyYW5nZSkpOwogfQogCi1JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpJbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlKFJhbmdlKiByYW5nZSkKK0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUoUmFuZ2UmIHJhbmdlKQogICAgIDogbV9yYW5n
ZShyYW5nZSkKIHsKIH0KIAogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6fkluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUoKQogewotICAgIGRvbUhhbmRsZUNhY2hlKCkucmVtb3ZlKG1fcmFuZ2Uu
Z2V0KCkpOworICAgIGRvbUhhbmRsZUNhY2hlKCkucmVtb3ZlKG1fcmFuZ2UucHRyKCkpOwogfQog
Ci1SYW5nZSogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y29yZVJhbmdlKCkgY29uc3QKK1Jh
bmdlJiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjb3JlUmFuZ2UoKSBjb25zdAogewogICAg
IHJldHVybiBtX3JhbmdlLmdldCgpOwogfQpAQCAtMTA5LDcgKzEwOSw3IEBAIFdlYkNvcmU6Oklu
dFJlY3QgSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Ym91bmRpbmdSZWN0SW5XaW5kb3dDb29y
ZGluYXRlcygpIGNvCiAgICAgcmV0dXJuIGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
ZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ1JlY3QpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucykKK1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6
cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBEb2N1bWVudCYg
b3duZXJEb2N1bWVudCA9IG1fcmFuZ2UtPm93bmVyRG9jdW1lbnQoKTsKICAgICBGcmFtZSogZnJh
bWUgPSBvd25lckRvY3VtZW50LmZyYW1lKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgUGFzc1JlZlB0
cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFw
c2hvdE9wdGlvbnMgb3AKICAgICBSZWY8RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwogCiAgICAg
VmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKCptX3JhbmdlKSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKG1fcmFuZ2UpKTsKIAogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpID8gMSA6IGZyYW1l
LT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KG1fcmFuZ2UtPmFic29sdXRlQm91bmRpbmdSZWN0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCmluZGV4IDY0N2IxYzI0NGE5
MzZkM2U3YzA5M2ZkNWQ3YmE0NDAyNDQzZWE2MTcuLmY4MGUzM2FiZTgwNjUxZDk3OTE4YjhkYmZh
MTQ5ZTQ2MWY1NmJjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NiwyNCArNDUsMjQgQEAgY2xhc3MgV2ViSW1hZ2U7
CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVSYW5nZUhhbmRsZT4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRl
KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7CisgICAg
c3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7CiAKICAgICB2aXJ0dWFs
IH5JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlKCk7CiAKICAgICBSZWY8SW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlPiBkb2N1bWVudCgpOwogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZGluZ1Jl
Y3RJbldpbmRvd0Nvb3JkaW5hdGVzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxXZWJJbWFnZT4g
cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMpOworICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVu
ZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMpOwogICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CiAK
LSAgICBXZWJDb3JlOjpSYW5nZSogY29yZVJhbmdlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6UmFu
Z2UmIGNvcmVSYW5nZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZWY8SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OlJhbmdlKik7Ci0gICAgSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZShXZWJDb3JlOjpSYW5nZSopOworICAgIHN0YXRpYyBSZWY8SW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OlJhbmdlJik7CisgICAgSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZShXZWJDb3JlOjpSYW5nZSYpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBtX3JhbmdlOworICAgIFJlZjxXZWJDb3JlOjpSYW5nZT4gbV9yYW5nZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5
MmI2ZmRiMWZhNjk5MzllZjllZTU3YjM5MmY1ZTNlNjc4MDAwM2Y2Li42MWQ5Y2MwN2M4ZTg5MGE5
MzA5ODFmYzdhODQ0OTQzM2I0MTE4ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtODgs
NyArODgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZShjb25zdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBBUEk6Ok9iamVjdCogaW5p
dGlhbGl6YXRpb25Vc2VyRGF0YSkKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gSW5qZWN0ZWRCdW5k
bGU6OmNyZWF0ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKICAgICBhdXRvIGJ1bmRs
ZSA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGUocGFyYW1ldGVycykpOwogCkBAIC01NzIs
NyArNTcyLDcgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpT
Q29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganMKIH0KIAogLy8gRklYTUUgR2V0IHJp
ZCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBtb3ZlIGl0IGludG8gV0tCdW5kbGUuY3BwLgotUGFzc1Jl
ZlB0cjxBUEk6OkRhdGE+IEluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJy
YXkoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKK1JlZjxBUEk6OkRhdGE+
IEluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0YSkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlID0gdG9KUyhjb250ZXh0KTsKICAgICBSZWZQdHI8VWludDhBcnJheT4gYXJyYXlEYXRhID0g
V2ViQ29yZTo6dG9VbnNoYXJlZFVpbnQ4QXJyYXkoZXhlY1N0YXRlLT52bSgpLCB0b0pTKGV4ZWNT
dGF0ZSwgZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCmluZGV4IDAwMDU1MGJmZjI0MWNjMDVkNjU0
Y2U4ZjExNjlkZTJhNzJjNjMxYTAuLjhmMzM3Y2M5ZjMwYmJjOGRjNzAxNjg0NDgxYzk1ZjI4MTU5
YThhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJX
S0J1bmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRUeXBlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVXNlclNjcmlwdFR5cGVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03NSw3ICs3NSw3IEBAIHN0cnVj
dCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29uc3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlv
blVzZXJEYXRhKTsKKyAgICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBjcmVhdGUoY29u
c3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXph
dGlvblVzZXJEYXRhKTsKIAogICAgIH5JbmplY3RlZEJ1bmRsZSgpOwogCkBAIC0xMTcsNyArMTE3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXZWJQ
YWdlKiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9p
ZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7CiAgICAgdWlu
dDY0X3Qgd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKLSAgICBQ
YXNzUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZik7CisgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21V
aW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAKICAgICAvLyBVc2VyQ29udGVu
dCBBUEkKICAgICB2b2lkIGFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqLCBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYg
dXJsLCBBUEk6OkFycmF5KiB3aGl0ZWxpc3QsIEFQSTo6QXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29y
ZTo6VXNlclNjcmlwdEluamVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRG
cmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cAppbmRleCBlODc5MDViY2EyYzNkOTZkYmM5ZjkxMjVkZWVlYjYwODdkZDgzODZiLi4zZjI2MDg0
YjFlNGU3YmI1YWMwOWUwNjEyYzBlN2Q1N2VmZWE0Yjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0OjppdGVtQXRJbmRleChpbnQgaW5kZXgpIGNvbnN0CitSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDo6aXRl
bUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUGFnZSogcGFnZSA9IG1fcGFn
ZS0+Y29yZVBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtOjpjcmVhdGUocGFnZS0+YmFja0ZvcndhcmQoKS5pdGVtQXRJbmRleChpbmRleCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmgKaW5kZXgg
YTQ0ZDBiOTYyMDBiMDIzMWU2YjllYTcxMWRjMDhiYmEyNDU3MTYwYy4uOWVkYWZhYWM3ZWY5Nzgy
Nzc4NDdlYWVkN2M4MDAwOTkwODE4NWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3QuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdF9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTQyLDExICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsKICAgICB9
CiAKLSAgICB2b2lkIGRldGFjaCgpIHsgbV9wYWdlID0gMDsgfQorICAgIHZvaWQgZGV0YWNoKCkg
eyBtX3BhZ2UgPSBudWxscHRyOyB9CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBQYXNzUmVm
UHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gaXRlbUF0SW5kZXgoaW50KSBj
b25zdDsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBpdGVt
QXRJbmRleChpbnQpIGNvbnN0OwogICAgIGludCBiYWNrTGlzdENvdW50KCkgY29uc3Q7CiAgICAg
aW50IGZvcndhcmRMaXN0Q291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggNDI4MjdmNmY0ZmVlZTE1NDdlOWI2
ZDhkZTU2MDMxNGQxYzUzZDFiZC4uMTVlNmE1NzFiNjVlZmQ0MzE1ZGU5ZWM4OWIxMzViN2ZkMmQ5
MDQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbS5oCkBAIC0zOSwxMSArMzksMTEgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
PiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkKKyAgICBzdGF0
aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKFJlZlB0
cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiBpdGVtKQogICAgIHsKICAgICAgICAgaWYgKCFpdGVt
KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0pKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0SXRlbShXVEZNb3ZlKGl0ZW0pKSk7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qIGl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2l0ZW0uZ2V0KCk7IH0KQEAgLTYw
LDcgKzYwLDkgQEAgcHVibGljOgogICAgIFJlZjxBUEk6OkFycmF5PiBjaGlsZHJlbigpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbShQYXNz
UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBpdGVtKSA6IG1faXRlbShpdGVtKSB7IH0KKyAg
ICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oUmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPiYmIGl0ZW0pCisgICAgICAgIDogbV9pdGVtKFdURk1vdmUoaXRlbSkp
CisgICAgeyB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IG1faXRlbTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggODI2
ZDM3MjE5YmIwNmE4NjdlNmZiMTc0NTQ4YzdjMDhlMDczMGY1NS4uNzJhZTc3MjdkNDVlNGZkYTk3
MTkzMjUyOWYyOTdmODE3MzM1NjQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBAIFJlZjxJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGNvbnN0IEhp
dFRlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
KGhpdFRlc3RSZXN1bHQpKTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6bm9kZUhhbmRsZSgpIGNvbnN0CitSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6
Om5vZGVIYW5kbGUoKSBjb25zdAogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU6OmdldE9yQ3JlYXRlKG1faGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSk7CiB9
CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ6OnVybEVsZW1lbnRIYW5kbGUoKSBjb25zdAorUmVmUHRyPEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFu
ZGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRP
ckNyZWF0ZShtX2hpdFRlc3RSZXN1bHQuVVJMRWxlbWVudCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oCmluZGV4IDI1ODJiNDdkZGY5OWE3N2Y4NmQ4NGU0
ODFmYzdiNGYwNTFkOTAyNzIuLjE0ZTNlNjczODZmNTU1ZjBkYTg3ZTIwMjU4YzE3ZGIyYTExNzBm
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaApAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdE1lZGlhVHlw
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0
LDggKzQ0LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYg
Y29yZUhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RSZXN1bHQ7IH0KIAot
ICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlKCkgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IHVybEVsZW1lbnRI
YW5kbGUoKSBjb25zdDsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2Rl
SGFuZGxlKCkgY29uc3Q7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gdXJs
RWxlbWVudEhhbmRsZSgpIGNvbnN0OwogICAgIFdlYkZyYW1lKiBmcmFtZSgpIGNvbnN0OwogICAg
IFdlYkZyYW1lKiB0YXJnZXRGcmFtZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggMzU2OWZkODc1YmU4NmM5NTg2ZjBl
ZTdiMjUwMDEzYzk3YzNjNTNkZS4uNzZkNTA2OGY1OTI3OTliYjIwNTJiYjhkZGJhZTIwMTY1ZWE4
ODE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmNwcApAQCAtOTcsMTIgKzk3LDEyIEBAIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlw
ZSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrCiAgICAgcmV0
dXJuIHN5bnRoZXRpY0NsaWNrVHlwZUZvck1vdXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRp
b25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOwogfQogCi1SZWY8SW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uPiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IGZvcm1TdGF0ZSkKK1JlZjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1T
dGF0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24oZnJhbWUsIGFjdGlvbiwgZm9ybVN0YXRlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKGZyYW1lLCBhY3Rpb24sIFdURk1v
dmUoZm9ybVN0YXRlKSkpOwogfQogCi1JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Oklu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3Jt
U3RhdGUpCitJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbihXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5h
dmlnYXRpb25BY3Rpb24sIFJlZlB0cjxGb3JtU3RhdGU+JiYgZm9ybVN0YXRlKQogICAgIDogbV9u
YXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uQWN0aW9uLnR5cGUoKSkKICAgICAsIG1fbW9kaWZpZXJz
KG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpCiAgICAgLCBt
X21vdXNlQnV0dG9uKFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggYjM3NjZlMzI2MWEwMGU4MTVhOWU2
MzU2ZTI5YWViMTUyYWE4NjFiYi4uZmE2YTJhNTQ4Yjc2ZGY3MGFjNDU2ZmJiMTZhNGY3NzAwNDIy
MThhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlw
ZXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDcg
KzQ1LDcgQEAgY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbj4gY3JlYXRlKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgc3Rh
dGljIFJlZjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSos
IGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0
YXRlPiYmKTsKIAogICAgIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0
YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIEF0b21pY1N0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG93bmxvYWRBdHRyaWJ1dGU7IH0KIAogcHJpdmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsKKyAgICBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
JiwgUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4mJik7CiAKICAgICBXZWJDb3JlOjpOYXZpZ2F0
aW9uVHlwZSBtX25hdmlnYXRpb25UeXBlOwogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbV9tb2Rp
ZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggNWJhNDdjYzM4M2NkYTgyNDAyYTQ3ZWM5ZDk1NzdhOTUwYzBkZmZlOS4uZTI1YjA3
MWIyMTE5YWI1NzA0NTM0ZjQ3Njk2NmUyYTMwOTE2ZjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZv
ckZyYW1lKFdlYlBhZ2UqIHBhZ2UsCiAgICAgaWYgKCFtX2NsaWVudC5kaWRDbGVhcldpbmRvd09i
amVjdEZvckZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC5kaWRDbGVhcldp
bmRvd09iamVjdEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKHdvcmxkKS5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgbV9jbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAppbmRleCA5ZTExYTc2Mjg4
MWMwMDY2YWRiYWQ4NWEwYmQ3ZjY3MzI2NTIxNzI5Li5iMTc4MzFkMmM3YTk0M2RjNGQ2YzM0NTUx
ZDMyYmIwYjJmNDg2ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZC5jcHAKQEAgLTYxLDIwICs2MSwyMCBAQCBSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4g
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbgogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQoU2NyaXB0Q29udHJv
bGxlcjo6Y3JlYXRlV29ybGQoKSwgbmFtZSkpOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ+IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCitSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUoRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCkKIHsKICAgICBpZiAoJndvcmxkID09ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAgICAg
ICAgcmV0dXJuIG5vcm1hbFdvcmxkKCk7CiAKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZCogZXhpc3RpbmdXb3JsZCA9IGFsbFdvcmxkcygpLmdldCgmd29ybGQpKQotICAgICAgICBy
ZXR1cm4gZXhpc3RpbmdXb3JsZDsKKyAgICAgICAgcmV0dXJuICpleGlzdGluZ1dvcmxkOwogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKHdvcmxkLCB1
bmlxdWVXb3JsZE5hbWUoKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQod29ybGQsIHVuaXF1ZVdvcmxkTmFtZSgpKSk7CiB9CiAKLUluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQqIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCkKK0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKCkKIHsKLSAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCog
d29ybGQgPSBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZChtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSwgU3RyaW5nKCkpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkID0gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBTdHJpbmcoKSkpLmxlYWtSZWYoKTsK
ICAgICByZXR1cm4gd29ybGQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkLmgKaW5kZXggZmU3OTZmNmU4NTNjM2I4YmRjZWRkNTMyYTQ4ZTI2ODM5ODY0OGVjYi4uNTA5
MmFlNzI1NzZlY2ExODZiMmI1NDg2YmRmNWYxNmRhOTY3OTUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZF9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDggKzQx
LDggQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmQKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBSZWY8SW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZD4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGdldE9yQ3JlYXRlKFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZCYpOwotICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
KiBub3JtYWxXb3JsZCgpOworICAgIHN0YXRpYyBSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZD4gZ2V0T3JDcmVhdGUoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJik7CisgICAgc3RhdGljIElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIG5vcm1hbFdvcmxkKCk7CiAKICAgICB2aXJ0dWFsIH5J
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmlu
ZGV4IDE3ZDM1Yzk0YTA5MWM4MTY3YzVlN2M3ZmY3MzQ1OGRkOWI3NTE3Y2IuLmE0ZDdmMWE5MGNj
OTAyOTFhNzcxMDlkMTY4MWZlMjRiYjMzMjA1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cApAQCAtNTMsMTggKzUzLDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogLy8gVGhlIHBsdWctaW4g
dGhhdCB3ZSdyZSBjdXJyZW50bHkgY2FsbGluZyBOUFBfTmV3IGZvci4KIHN0YXRpYyBOZXRzY2Fw
ZVBsdWdpbiogY3VycmVudE5QUE5ld1BsdWdpbjsKIAotUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBO
ZXRzY2FwZVBsdWdpbjo6Y3JlYXRlKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHBs
dWdpbk1vZHVsZSkKK1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gTmV0c2NhcGVQbHVnaW46OmNyZWF0
ZShSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYgcGx1Z2luTW9kdWxlKQogewogICAgIGlm
ICghcGx1Z2luTW9kdWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luKHBsdWdpbk1vZHVsZSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5ldHNjYXBlUGx1Z2luKHBsdWdpbk1vZHVsZS5yZWxlYXNlTm9uTnVsbCgp
KSk7CiB9CiAgICAgCi1OZXRzY2FwZVBsdWdpbjo6TmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxO
ZXRzY2FwZVBsdWdpbk1vZHVsZT4gcGx1Z2luTW9kdWxlKQorTmV0c2NhcGVQbHVnaW46Ok5ldHNj
YXBlUGx1Z2luKFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4mJiBwbHVnaW5Nb2R1bGUpCiAgICAg
OiBQbHVnaW4oTmV0c2NhcGVQbHVnaW5UeXBlKQogICAgICwgbV9uZXh0UmVxdWVzdElEKDApCi0g
ICAgLCBtX3BsdWdpbk1vZHVsZShwbHVnaW5Nb2R1bGUpCisgICAgLCBtX3BsdWdpbk1vZHVsZShX
VEZNb3ZlKHBsdWdpbk1vZHVsZSkpCiAgICAgLCBtX25wV2luZG93KCkKICAgICAsIG1faXNTdGFy
dGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMTEwMiw3ICsxMTAyLDcgQEAgU2Ny
b2xsYmFyKiBOZXRzY2FwZVBsdWdpbjo6dmVydGljYWxTY3JvbGxiYXIoKQogYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6c3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdAogewogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHJldHVybiBtX3BsdWdpbk1vZHVsZSAmJiBtX3BsdWdpbk1vZHVsZS0+cGx1Z2lu
UXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpTdXBwb3J0c1NuYXBzaG90dGluZyk7Cisg
ICAgcmV0dXJuIG1fcGx1Z2luTW9kdWxlLT5wbHVnaW5RdWlya3MoKS5jb250YWlucyhQbHVnaW5R
dWlya3M6OlN1cHBvcnRzU25hcHNob3R0aW5nKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggNzgyMjdmNWY5NGY0YWM3NGRhMDU1NjBlYjQ2
NDI3NmU0MzFkYTRhOS4uMDdjOGIwODZhYjg5ZWQ5N2FmNDQyMjQ5ZjhhNzgxMmZjZmNiOWU5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgTmV0c2NhcGVQ
bHVnaW5Vbml4OwogCiBjbGFzcyBOZXRzY2FwZVBsdWdpbiA6IHB1YmxpYyBQbHVnaW4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGNyZWF0ZShQYXNzUmVmUHRy
PE5ldHNjYXBlUGx1Z2luTW9kdWxlPik7CisgICAgc3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdp
bj4gY3JlYXRlKFJlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4mJik7CiAgICAgdmlydHVhbCB+
TmV0c2NhcGVQbHVnaW4oKTsKIAogICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZy
b21OUFAoTlBQKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXRzY2FwZVBsdWdpbihQYXNzUmVmUHRyPE5ldHNj
YXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1bGUpOworICAgIGV4cGxpY2l0IE5ldHNjYXBlUGx1
Z2luKFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4mJik7CiAKICAgICB2b2lkIGNhbGxTZXRXaW5k
b3coKTsKICAgICB2b2lkIGNhbGxTZXRXaW5kb3dJbnZpc2libGUoKTsKQEAgLTI4Niw3ICsyODYs
NyBAQCBwcml2YXRlOgogICAgIFN0cmVhbXNNYXAgbV9zdHJlYW1zOwogICAgIEhhc2hNYXA8dm9p
ZCosIHN0ZDo6cGFpcjxSZWZQdHI8TmV0c2NhcGVQbHVnaW5TdHJlYW0+LCBTdHJpbmc+PiBtX3Jl
ZGlyZWN0czsKIAotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gbV9wbHVnaW5Nb2R1
bGU7CisgICAgUmVmPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBtX3BsdWdpbk1vZHVsZTsKICAgICBO
UFBfdCBtX25wcDsKICAgICBOUFdpbmRvdyBtX25wV2luZG93OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlv
bi5oCmluZGV4IGY2MzM5NzAxZTY2MDEwOWUyOTFhOGZjMGM1YjkxYTQ5ODlhMzRlYmUuLmFmZGEx
NzExM2E2NTczYjQwZjVlNDJkZGQwMzI0MmQ5ZWFkZDVmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlv
bi5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFBERlBsdWdpbjsKIAogY2xhc3MgUERGUGx1Z2lu
QW5ub3RhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBERlBsdWdpbkFubm90YXRpb24+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBjcmVhdGUo
UERGQW5ub3RhdGlvbiAqLCBQREZMYXllckNvbnRyb2xsZXIgKiwgUERGUGx1Z2luKik7CisgICAg
c3RhdGljIFJlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBjcmVhdGUoUERGQW5ub3RhdGlvbiAq
LCBQREZMYXllckNvbnRyb2xsZXIgKiwgUERGUGx1Z2luKik7CiAgICAgdmlydHVhbCB+UERGUGx1
Z2luQW5ub3RhdGlvbigpOwogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudC5nZXQoKTsgfQpAQCAtNzUsNyArNzUsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50Kik7CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90
YXRpb25FbGVtZW50KCkgPSAwOworICAgIHZpcnR1YWwgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNy
ZWF0ZUFubm90YXRpb25FbGVtZW50KCkgPSAwOwogCiAgICAgY2xhc3MgUERGUGx1Z2luQW5ub3Rh
dGlvbkV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lciB7CiAgICAg
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCmluZGV4IDQyMmJkYWM0OWI0Zjg4MWNhZmEy
ODM1YjcxNjJiZGU4YjYxYjliMWMuLjc0ZGNiYzgzNzkxNGM0Mzc3MmRhYWQ3NTljZTFhZmJkNzcw
NjliYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0KQEAgLTUyLDE0ICs1MiwxNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotUGFzc1JlZlB0
cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBQREZQbHVnaW5Bbm5vdGF0aW9uOjpjcmVhdGUoUERGQW5u
b3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpwZGZMYXllckNvbnRyb2xs
ZXIsIFBERlBsdWdpbiogcGx1Z2luKQorUmVmUHRyPFBERlBsdWdpbkFubm90YXRpb24+IFBERlBs
dWdpbkFubm90YXRpb246OmNyZWF0ZShQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXll
ckNvbnRyb2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCiB7CiAg
ICAgaWYgKFthbm5vdGF0aW9uIGlzS2luZE9mQ2xhc3M6cGRmQW5ub3RhdGlvblRleHRXaWRnZXRD
bGFzcygpXSkKICAgICAgICAgcmV0dXJuIFBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGUo
YW5ub3RhdGlvbiwgcGRmTGF5ZXJDb250cm9sbGVyLCBwbHVnaW4pOwogICAgIGlmIChbYW5ub3Rh
dGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRpb25DaG9pY2VXaWRnZXRDbGFzcygpXSkKICAg
ICAgICAgcmV0dXJuIFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZShhbm5vdGF0aW9u
LCBwZGZMYXllckNvbnRyb2xsZXIsIHBsdWdpbik7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBQREZQbHVnaW5Bbm5vdGF0aW9uOjphdHRhY2goRWxlbWVu
dCogcGFyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaAppbmRleCA2YWY4N2Nk
N2Y5MmI2ODBmMTJlNDI3ODAzYzg2NjJlYzVlZTJiYjk0Li4wZjc2NzVjNWQyMzFkNTdkOTJiZDYy
NzkzNmU5ZTAyNGQyZTFjNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24uaApA
QCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJpZGU7Cisg
ICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJp
ZGU7CiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3Rh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5tbQppbmRleCAyNzM1MDMyNTJmMDA2OGZiYWZkZGRiZjNmZDllZTIy
NGI2ZjZjZjVjLi5kYmU1YWU5NzUxZmVkYzhjOGRmMjIxMzBmNGJhZTNhMDM5MWRiZGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNo
b2ljZUFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQg
UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y29tbWl0KCkKICAgICBQREZQbHVnaW5Bbm5vdGF0
aW9uOjpjb21taXQoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5DaG9pY2VB
bm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitSZWY8RWxlbWVudD4gUERGUGx1
Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewogICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IHBhcmVudCgpLT5kb2N1bWVudCgpOwogI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKQEAgLTc0LDEzICs3NCwxMyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IFBE
RlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICAgICBQ
REZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0ICpjaG9pY2VBbm5vdGF0aW9uID0gdGhpcy0+Y2hvaWNl
QW5ub3RhdGlvbigpOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogCi0gICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHNlbGVjdFRhZywgZmFs
c2UpOworICAgIGF1dG8gZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc2VsZWN0VGFn
LCBmYWxzZSk7CiAKLSAgICBTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQuZ2V0KCkpOworICAgIGF1dG8mIHN0eWxlZEVsZW1l
bnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PihlbGVtZW50LmdldCgpKTsKIAogICAgIC8vIEZJ
WE1FOiBNYXRjaCBmb250IHdlaWdodCBhbmQgc3R5bGUgYXMgd2VsbD8KLSAgICBzdHlsZWRFbGVt
ZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yRnJvbU5T
Q29sb3IoY2hvaWNlQW5ub3RhdGlvbi5mb250Q29sb3IpLnNlcmlhbGl6ZWQoKSk7Ci0gICAgc3R5
bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHks
IGNob2ljZUFubm90YXRpb24uZm9udC5mYW1pbHlOYW1lKTsKKyAgICBzdHlsZWRFbGVtZW50LnNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcihj
aG9pY2VBbm5vdGF0aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKKyAgICBzdHlsZWRFbGVt
ZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBjaG9pY2VB
bm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CiAKICAgICBOU0FycmF5ICpjaG9pY2VzID0gY2hv
aWNlQW5ub3RhdGlvbi5jaG9pY2VzOwogICAgIE5TU3RyaW5nICpzZWxlY3RlZENob2ljZSA9IGNo
b2ljZUFubm90YXRpb24uc3RyaW5nVmFsdWU7CkBAIC05Myw3ICs5Myw3IEBAIFBhc3NSZWZQdHI8
RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1l
bnQoKQogICAgICAgICBpZiAoY2hvaWNlID09IHNlbGVjdGVkQ2hvaWNlKQogICAgICAgICAgICAg
Y2hvaWNlT3B0aW9uLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNlbGVjdGVk
QXR0ciwgQXRvbWljU3RyaW5nKCJzZWxlY3RlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpKTsKIAotICAgICAgICBzdHlsZWRFbGVtZW50LT5hcHBlbmRDaGlsZChjaG9pY2VP
cHRpb24pOworICAgICAgICBzdHlsZWRFbGVtZW50LmFwcGVuZENoaWxkKGNob2ljZU9wdGlvbik7
CiAgICAgfQogCiAgICAgcmV0dXJuIGVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5o
CmluZGV4IDE2MzI1MGFkYmM1ODA1OGVkM2IwNmZiNWIwOTViMDYxNGExZmUyODAuLjM2ZTJlODJi
M2IyODBhOGY2MWJhYTdjNTI3NWI5ZGE3NDczOGI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRG
aWVsZC5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVy
cmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQo
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKSBvdmVy
cmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KaW5kZXggMGE5MDcwNzY0Njc2
MGE5ZDNiZWQ4Njc2MTNhMWZjNjEzY2MwODQ2ZC4uNjc3ODQ4OWQ4YzAxYzZlMjM3Y2U1ZDY0ZjVj
NzIxOWE0MjkwMzhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQpAQCAtNTMsOSAr
NTMsOSBAQCBQREZQbHVnaW5QYXNzd29yZEZpZWxkOjp+UERGUGx1Z2luUGFzc3dvcmRGaWVsZCgp
CiAgICAgZWxlbWVudCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2
ZW50LCAqZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4g
UERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQorUmVmPEVs
ZW1lbnQ+IFBERlBsdWdpblBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkK
IHsKLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IFBERlBsdWdpblRleHRBbm5vdGF0aW9u
OjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOworICAgIGF1dG8gZWxlbWVudCA9IFBERlBsdWdp
blRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpOwogICAgIGVsZW1lbnQt
PnNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgInBhc3N3b3JkIik7CiAgICAgZWxlbWVudC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFs
c2UpOwogICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCmlu
ZGV4IGE4ZTYyZTljYzUxNjU4YWJlNTU1OGY5YzBkNzJmOGMwMWNlZDllMTguLjBjYWU2ZjAwZmVl
NzAxMTg3YzI0NzRhOGU3ZTIxOGExYzJhMjc1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0
aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3Zl
cnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRl
eHRBbm5vdGF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW5UZXh0QW5ub3RhdGlvbi5tbQppbmRleCBiY2Y5YzU1ZWEyMzMzMzAyNTZlNjE5ZTVl
ZTViZGFkYjc2NzEyZTNkLi43MTA5NDVlYWQzMTE3MTRlM2JmNmE2MjlhOTk0MDZmNmIzMzg3MzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpblRleHRBbm5vdGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW0KQEAgLTc5LDEwICs3OSw4IEBAIFBE
RlBsdWdpblRleHRBbm5vdGF0aW9uOjp+UERGUGx1Z2luVGV4dEFubm90YXRpb24oKQogICAgIGVs
ZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50LCAq
ZXZlbnRMaXN0ZW5lcigpLCBmYWxzZSk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1
Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKK1JlZjxFbGVtZW50
PiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogewot
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwotCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0g
cGFyZW50KCktPmRvY3VtZW50KCk7CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
CkBAIC05MCwyNyArODgsMjMgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAogICAgIGJvb2wgaXNNdWx0aWxpbmUgPSB0ZXh0QW5ub3RhdGlvbi5pc011bHRpbGlu
ZTsKIAotICAgIGlmIChpc011bHRpbGluZSkKLSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQodGV4dGFyZWFUYWcsIGZhbHNlKTsKLSAgICBlbHNlCi0gICAgICAgIGVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGlucHV0VGFnLCBmYWxzZSk7Ci0KKyAgICBhdXRv
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGlzTXVsdGlsaW5lID8gdGV4dGFyZWFU
YWcgOiBpbnB1dFRhZywgZmFsc2UpOwogICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogCi0gICAg
U3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQq
PihlbGVtZW50LmdldCgpKTsKKyAgICBhdXRvJiBzdHlsZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5
bGVkRWxlbWVudD4oZWxlbWVudC5nZXQoKSk7CiAKICAgICBpZiAoIXRleHRBbm5vdGF0aW9uKQog
ICAgICAgICByZXR1cm4gZWxlbWVudDsKIAogICAgIC8vIEZJWE1FOiBNYXRjaCBmb250IHdlaWdo
dCBhbmQgc3R5bGUgYXMgd2VsbD8KLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yRnJvbU5TQ29sb3IodGV4dEFubm90YXRpb24u
Zm9udENvbG9yKS5zZXJpYWxpemVkKCkpOwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCB0ZXh0QW5ub3RhdGlvbi5mb250LmZh
bWlseU5hbWUpOwotICAgIHN0eWxlZEVsZW1lbnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KHRl
eHRBbm5vdGF0aW9uLmFsaWdubWVudCkpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKHRleHRBbm5vdGF0
aW9uLmZvbnRDb2xvcikuc2VyaWFsaXplZCgpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCB0ZXh0QW5ub3RhdGlvbi5mb250
LmZhbWlseU5hbWUpOworICAgIHN0eWxlZEVsZW1lbnQuc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRleHRBbGlnbiwgY3NzQWxpZ25tZW50VmFsdWVGb3JOU1RleHRBbGlnbm1lbnQo
dGV4dEFubm90YXRpb24uYWxpZ25tZW50KSk7CiAKICAgICBpZiAoaXNNdWx0aWxpbmUpCi0gICAg
ICAgIGRvd25jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLT5zZXRWYWx1
ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7CisgICAgICAgIGRvd25jYXN0PEhUTUxUZXh0
QXJlYUVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLnNldFZhbHVlKHRleHRBbm5vdGF0aW9uLnN0cmlu
Z1ZhbHVlKTsKICAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHN0
eWxlZEVsZW1lbnQpLT5zZXRWYWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7CisgICAg
ICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLnNldFZhbHVlKHRl
eHRBbm5vdGF0aW9uLnN0cmluZ1ZhbHVlKTsKIAogICAgIHJldHVybiBlbGVtZW50OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IDg0NmU4YmRmYmU5M2QxNmEyODFi
YmYyYWFjM2MxMWI3NmNkMzIxYjcuLjFjODZhODAwNmRiZTJhYWM0NzUwOGZhN2E3NDgwOTA3YzYz
YzU0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8UmVmUHRyPEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ+LCB1bnNpZ25lZD4KIAogc3RhdGljIFdvcmxkTWFwJiB3b3JsZE1h
cCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAoc3RkOjppbml0
aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgMSwgc3RkOjptYWtl
X3BhaXIoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgMSkgfSB9KTsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V29ybGRNYXA+IG1hcChzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8V29ybGRNYXA6OktleVZhbHVlUGFpclR5cGU+IHsgeyAxLCBzdGQ6Om1ha2VfcGFpcigm
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgMSkgfSB9KTsKIAogICAg
IHJldHVybiBtYXA7CiB9CkBAIC0yMDgsOSArMjA4LDkgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+
JgogI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiBjbGFzcyBXZWJVc2VyTWVzc2Fn
ZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6VXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVXNlck1l
c3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5PiBjcmVhdGUoV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyKiBjb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQmIHdvcmxkLCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIHN0YXRpYyBSZWY8V2ViVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5PiBjcmVhdGUoV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyKiBjb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQmIHdvcmxkLCB1aW50NjRfdCBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yUHJveHkoY29u
dHJvbGxlciwgbmFtZSwgd29ybGQsIGlkZW50aWZpZXIpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KGNvbnRyb2xsZXIs
IG5hbWUsIHdvcmxkLCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+V2ViVXNl
ck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCmluZGV4IDVmNDU2NTRlZjdiNDAyODZiYmRlYWI1OGYyZTJlMmMwODk5NjllZTcuLmU1
MDA3YzkzODg0NjJmY2Q3NDAyNjQyZjNlY2VlMzRhZjcyYjlmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQpAQCAtNTksNyArNTksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgRnJhbWUmIGZyYW1lKQorc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZl
cnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFt
ZSYgZnJhbWUpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBmbGFncyA9IFNoYXJlYWJs
ZUJpdG1hcDo6U3VwcG9ydHNBbHBoYTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTIwMApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNvbnZlcnRJbWFnZVRvQml0bWFwKE5TSW1hZ2UgKmltYWdlLCBjb25zdCBJbgog
CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OnNhdmVkQ29udGV4dC5n
ZXQoKV07CiAKLSAgICByZXR1cm4gV1RGTW92ZShiaXRtYXApOworICAgIHJldHVybiBiaXRtYXA7
CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGUxMTc4MjU0
OTM0YWE1MGQ0OGUyZjdhZjM0NTViMmMzNTJlNGIzMS4uOGZlMzAyYTlmZmUzMDU2YmMxNWQzMTI4
ZTJkMDFjN2I0ZTUzOTA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNTc5MywxNCArNTc5MywxNCBAQCB2b2lkIFdlYlBhZ2U6OmFkZFVz
ZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcgogewogICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdHsgc291cmNlLCBXZWJD
b3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyB9OwogCi0gICAgbV91c2VyQ29udGVudENvbnRyb2xs
ZXItPmFkZFVzZXJTY3JpcHQoKkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxk
KCksIFdURk1vdmUodXNlclNjcmlwdCkpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5h
ZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdU
Rk1vdmUodXNlclNjcmlwdCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmFkZFVzZXJTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IGluamVjdGVkRnJhbWVzKQogewogICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHls
ZVNoZWV0eyBzb3VyY2UsIFdlYkNvcmU6OmJsYW5rVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZl
Y3RvcjxTdHJpbmc+KCksIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVVc2VyTGV2ZWwgfTsKIAot
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldCgqSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkp
OworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRVc2VyU3R5bGVTaGVldChJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcAppbmRleCAxYTVlMTAyZWM2MzQ5Mzk1NmUyMDZmN2U2YjM1YzM1ZGJm
NDM3ZDU0Li5jOGM5M2IyYjkwNTg3ZGMwNjk2ZmM1ZGE2YmFjNDQwMjNhMzc1MWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0
aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dl
YlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHN0cnVjdCBQcmludFBh
Z2VzRGF0YSB7CiAgICAgYm9vbCBpc1ZhbGlkIDogMTsKIH07CiAKLVBhc3NSZWZQdHI8V2ViUHJp
bnRPcGVyYXRpb25HdGs+IFdlYlByaW50T3BlcmF0aW9uR3RrOjpjcmVhdGUoV2ViUGFnZSogcGFn
ZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8pCitSZWZQdHI8V2ViUHJpbnRPcGVyYXRpb25H
dGs+IFdlYlByaW50T3BlcmF0aW9uR3RrOjpjcmVhdGUoV2ViUGFnZSogcGFnZSwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluZm8pCiB7CiAjaWYgSEFWRShHVEtfVU5JWF9QUklOVElORykKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByaW50T3BlcmF0aW9uR3RrVW5peChwYWdlLCBwcmludElu
Zm8pKTsKQEAgLTM4OCw3ICszODgsNyBAQCBQYXNzUmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3Rr
PiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIGNvbgogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAgICAgVU5VU0VEX1BBUkFNKHByaW50SW5mbyk7Ci0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5oCmluZGV4IGY1ZmVjMTA2Y2EyNzk0YjU2NzU2MTg1M2ZhODMxMTQ2MTkwNTFj
NDQuLjc0M2NjMmNlNTI1ODk3ZDE5MDdiODJlYmZiMjQxMjNkODIyMzA0OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIlByaW50SW5mby5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0d0
a1ByaW50U2V0dGluZ3MgR3RrUHJpbnRTZXR0aW5nczsKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgV2ViUHJpbnRPcGVyYXRpb25HdGsgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJQcmludE9wZXJhdGlvbkd0az4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlByaW50T3BlcmF0aW9uR3RrPiBjcmVhdGUoV2ViUGFnZSosIGNvbnN0IFByaW50SW5mbyYp
OworICAgIHN0YXRpYyBSZWZQdHI8V2ViUHJpbnRPcGVyYXRpb25HdGs+IGNyZWF0ZShXZWJQYWdl
KiwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdmlydHVhbCB+V2ViUHJpbnRPcGVyYXRpb25HdGso
KTsKIAogICAgIFdlYkNvcmU6OlByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmludENvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwNWNmMTEwOGJkMDcwM2I5OGEwNmQy
NjcyMzViMDk0Y2IwMTE5NDkxLi45MWI4ZjIzNTAwODEwNmExNTZhMzVjZGFiMzgwNWI1YTA4YWQ5
NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC0xMTc4LDcgKzExNzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdp
dGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVp
bgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2VzdHVyZUNhbGxiYWNrKHBvaW50
LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmxhZ3Mp
LCBjYWxsYmFja0lEKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBv
c2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9v
bCBiYXNlSXNTdGFydCkKK3N0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9zaXRpb24oRnJh
bWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGJhc2VJc1N0
YXJ0KQogewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHJl
c3VsdCA9IHBvc2l0aW9uOwpAQCAtMTIwMywxMCArMTIwMywxMCBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxSYW5nZT4gcmFuZ2VGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcAogICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9jdW1l
bnQoKSwgcmVzdWx0LCBzZWxlY3Rpb25FbmQpOwogICAgIH0KIAotICAgIHJldHVybiByYW5nZS5y
ZWxlYXNlKCk7CisgICAgcmV0dXJuIHJhbmdlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxSYW5n
ZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCwgU2VsZWN0aW9uRGlyZWN0
aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRhcnlG
b3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24s
IGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAg
U2VsZWN0aW9uRGlyZWN0aW9uIHNhbWVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlv
bkZvcndhcmQgOiBEaXJlY3Rpb25CYWNrd2FyZDsKICAgICBTZWxlY3Rpb25EaXJlY3Rpb24gb3Bw
b3NpdGVEaXJlY3Rpb24gPSBiYXNlSXNTdGFydCA/IERpcmVjdGlvbkJhY2t3YXJkIDogRGlyZWN0
aW9uRm9yd2FyZDsKQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdl
PiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNp
CiAKICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJp
dHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3JkIGJvdW5kYXJ5
LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoZXh0ZW50LCBXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewpAQCAtMTI1
MSw3ICsxMjUxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlQXRXb3JkQm91bmRh
cnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2kKICAgICBpZiAoZXh0ZW50Lmlz
TnVsbCgpIHx8IGV4dGVudCA9PSBiYXNlKQogICAgICAgICBleHRlbnQgPSB3b3JkQm91bmRhcnk7
CiAgICAgaWYgKGV4dGVudC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIChiYXNlIDwgZXh0ZW50KSA/IFJhbmdlOjpjcmVh
dGUoKmZyYW1lLT5kb2N1bWVudCgpLCBiYXNlLCBleHRlbnQpIDogUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUtPmRvY3VtZW50KCksIGV4dGVudCwgYmFzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5oCmluZGV4IDYzMzliMjIzMDY2MzhlMDJmMGYwOWYxY2ZlODcyZTE1NjNiNzQ5YjUu
LjE4N2MxZDgzMWFkYTgwMDM4YmYxNzc3OWQ2YjZiOWNlOGNkYmU5MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZS5oCkBAIC0xNjMsOSArMTYzLDkgQEAgcHVibGljOgogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBLZXlmcmFtZVZhbHVlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9uPiB2YWx1ZSkKKyAgICAgICAgS2V5ZnJhbWVWYWx1ZShSZWZQdHI8
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiYmIHZhbHVlKQogICAgICAgICAgICAgOiBrZXlUeXBl
KEZpbHRlcktleVR5cGUpCi0gICAgICAgICAgICAsIGZpbHRlcih2YWx1ZSkKKyAgICAgICAgICAg
ICwgZmlsdGVyKFdURk1vdmUodmFsdWUpKQogICAgICAgICB7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IGIxMDAzNzA0OTAyMWUyNjgyZmNkOWFh
YzNhMTNhMTFjOGM2Nzg3NDcuLmIyOWNhYTY2MmMyZDdhYmVjY2MwOGExNzdlYmUwNjc0MTUzOGI0
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTY1MCw4ICs2NTAs
OCBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZhbHVlcyhjb25zdCBWZWN0
b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JgogICAgIFZlY3RvcjxLZXlmcmFtZVZhbHVlPiBr
ZXlmcmFtZXM7CiAgICAga2V5ZnJhbWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodmFsdWVzLnNp
emUoKSk7CiAgICAgCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGtleWZyYW1lcy51bmNoZWNrZWRBcHBlbmQoS2V5ZnJhbWVWYWx1ZSh2YWx1
ZXNbaV0pKTsKKyAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVzKQorICAgICAgICBrZXlmcmFt
ZXMudW5jaGVja2VkQXBwZW5kKEtleWZyYW1lVmFsdWUgeyB2YWx1ZS5jb3B5UmVmKCkgfSk7CiAg
ICAgCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcyA9IFdURk1vdmUoa2V5ZnJhbWVzKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309972</attachid>
            <date>2017-05-12 17:10:29 -0700</date>
            <delta_ts>2017-05-12 18:55:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172055-20170512171028.patch</filename>
            <type>text/plain</type>
            <size>59272</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjA5NTlkZWNkYzU2OWFh
MmY1N2U5YzNjYjI3YTI2ZjgzNDQzZmY5MS4uODYzZDVmNTZhYjI3NDY5YzU1NmFiZGRkYmViZTQw
ZGFmZjc3NGE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg1IEBACiAyMDE3LTA1LTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgRHJvcCByZW1haW5pbmcgdXNl
cyBvZiBQYXNzUmVmUHRyIGluIFdlYktpdDIvV2ViUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbToKKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChjb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV0tCdW5kbGVTY3JpcHRX
b3JsZE5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwOgorICAgICAgICAod2Via2l0U2NyaXB0V29ybGRD
cmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZTo6Z2V0T3JDcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5
bGVEZWNsYXJhdGlvbkhhbmRsZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlOjpjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0OjpkZXRhY2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp1cmxFbGVtZW50SGFuZGxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpn
ZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1
Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN1cHBvcnRzU25hcHNob3R0
aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbkFubm90YXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpj
cmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpblRleHRBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0SW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphZGRV
c2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkVXNlclN0eWxlU2hlZXQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpyYW5nZUZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cmFuZ2VBdFdvcmRC
b3VuZGFyeUZvclBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKworMjAxNy0wNS0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCiAgICAgICAgIFN0b3AgdXNpbmcgUGFzc1JlZlB0ciB1bmRlciBX
ZWJLaXQyL1VJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyMDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElX
ZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5oCmluZGV4
IDgzNzU3NzdkYjgwZmUwN2VhYzgzNDkzMDMzYmQxODY0YWJhYzdhNzEuLjcxZGUyOGJkYTc0ZDdm
MDM0ZmI5MmM2ZjI4MjRmZWEzOWUyY2Y5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFy
Y2hpdmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJBcmNo
aXZlPiBjcmVhdGUoV2ViQXJjaGl2ZVJlc291cmNlKiBtYWluUmVzb3VyY2UsIFJlZlB0cjxBUEk6
OkFycmF5PiYmIHN1YnJlc291cmNlcywgUmVmUHRyPEFQSTo6QXJyYXk+JiYgc3ViZnJhbWVBcmNo
aXZlcyk7CiAgICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlPiBjcmVhdGUoQVBJOjpEYXRhKik7CiAg
ICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU+JiYpOwotICAgIHN0YXRpYyBSZWY8V2ViQXJjaGl2ZT4gY3JlYXRlKFdlYkNvcmU6
OlJhbmdlKik7CisgICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlPiBjcmVhdGUoV2ViQ29yZTo6UmFu
Z2UmKTsKIAogICAgIFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlKCk7CiAgICAgQVBJ
OjpBcnJheSogc3VicmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZl
Lm1tCmluZGV4IGYyZjBmZTAxNzFmOWUzMzMxNDQ3ZDM2ZDBhNDdjNmRiZTAxYTIzMmUuLmY2MTVm
NGNlNzZlZDU2OGIyYTZlOWMyYTExNDA5ZDdhYTFmYWRjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElXZWJBcmNoaXZlLm1tCkBAIC01Myw5ICs1Myw5IEBAIFJlZjxXZWJBcmNoaXZlPiBXZWJB
cmNoaXZlOjpjcmVhdGUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+JiYgbGVnYWN5V2ViQXJjaGl2
ZSkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlKGxlZ2FjeVdlYkFyY2hpdmUu
cmVsZWFzZU5vbk51bGwoKSkpOwogfQogCi1SZWY8V2ViQXJjaGl2ZT4gV2ViQXJjaGl2ZTo6Y3Jl
YXRlKFJhbmdlKiByYW5nZSkKK1JlZjxXZWJBcmNoaXZlPiBXZWJBcmNoaXZlOjpjcmVhdGUoUmFu
Z2UmIHJhbmdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmUoTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKHJhbmdlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkFyY2hpdmUoTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCZyYW5nZSkpKTsKIH0KIAogV2ViQXJj
aGl2ZTo6V2ViQXJjaGl2ZShXZWJBcmNoaXZlUmVzb3VyY2UqIG1haW5SZXNvdXJjZSwgUmVmUHRy
PEFQSTo6QXJyYXk+JiYgc3VicmVzb3VyY2VzLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBzdWJmcmFt
ZUFyY2hpdmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5SYW5nZUhhbmRsZS5tbQppbmRleCA3Y2Q1YWIzMDRmNjU5ZWQ0ODE4NDYzNzI5OWZl
MGQyMzMzMTEyYmE5Li43OTRhYjFjZTdkYmM1MDkzNzdhNjY4MjE1ZDU3NWNlMTlhZDUxMzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5S
YW5nZUhhbmRsZS5tbQpAQCAtNzAsNyArNzAsNyBAQCAtIChOU1N0cmluZyAqKXRleHQKICNpZiBU
QVJHRVRfT1NfSVBIT05FCiAtIChOU0FycmF5ICopZGV0ZWN0RGF0YVdpdGhUeXBlczooV0tEYXRh
RGV0ZWN0b3JUeXBlcyl0eXBlcyBjb250ZXh0OihOU0RpY3Rpb25hcnkgKiljb250ZXh0IFdLX0FQ
SV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5n
ZT4gY29yZVJhbmdlID0gX3JhbmdlSGFuZGxlLT5jb3JlUmFuZ2UoKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6UmFuZ2U+IGNvcmVSYW5nZSA9ICZfcmFuZ2VIYW5kbGUtPmNvcmVSYW5nZSgpOwogICAg
IHJldHVybiBXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShjb3Jl
UmFuZ2UsIGZyb21XS0RhdGFEZXRlY3RvclR5cGVzKHR5cGVzKSwgY29udGV4dCk7CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQubW0KaW5kZXggMWFlYzBiOTIyZWUzZWVkOWI0YTIxZGQ3NTYyNmE2Zjg1OGM0
NjE1Zi4uOGNjNjI4YWMxNzYzZmE1Njk1ZDc0MTA1YzNlNDhlOThlODc4NGQ2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQubW0KQEAgLTQyLDcgKzQyLDcgQEAgKyAoV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQg
Kil3b3JsZAogCiArIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKW5vcm1hbFdvcmxk
CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoKkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1h
bFdvcmxkKCkpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6
Om5vcm1hbFdvcmxkKCkpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5j
cHAKaW5kZXggYjFiYWFjZTk2NWY4MGY4NzkwODMzZGUzM2JkMWY3YmVhMWVlMzRlYy4uZDNmZjI1
ZmUwMmI2ZDgzNjM1OTc2OTRhYjdmODNiMzg1NjIwZWFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5j
cHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFdLQnVuZGxlU2V0RGF0YWJhc2VRdW90YShXS0J1
bmRsZVJlZiBidW5kbGVSZWYsIHVpbnQ2NF90IHF1b3RhKQogCiBXS0RhdGFSZWYgV0tCdW5kbGVD
cmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChi
dW5kbGUpLT5jcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoY29udGV4dCwgZGF0YSkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChidW5kbGUpLT5jcmVhdGVXZWJEYXRhRnJv
bVVpbnQ4QXJyYXkoY29udGV4dCwgZGF0YSkubGVha1JlZigpKTsKIH0KIAogaW50IFdLQnVuZGxl
TnVtYmVyT2ZQYWdlcyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWVSZWYsIGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgZG91YmxlIHBhZ2VIZWlnaHRJblBpeGVs
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA5NGFiNGRhNzU4YTBmMzA1ZTZm
Yzg0YmY2YjljMjQ2NjQ0MWMwMDllLi45MDdiN2Q2MmE4ZThlYTQ4YzQ3OGNlNmE1NjU5Y2E3NWUz
Y2RlYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC0xNzksNyArMTc5LDcg
QEAgdm9pZCBXS0J1bmRsZVBhZ2VDbGlja01lbnVJdGVtKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0NvbnRleHRNZW51SXRlbVJlZiBpdGUKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY29udGV4dE1lbnVJdGVtcyhjb25zdCBX
ZWJDb250ZXh0TWVudSYgY29udGV4dE1lbnUpCitzdGF0aWMgUmVmPEFQSTo6QXJyYXk+IGNvbnRl
eHRNZW51SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51KQogewogICAgIGF1
dG8gaXRlbXMgPSBjb250ZXh0TWVudS5pdGVtcygpOwogCkBAIC0xOTgsNyArMTk4LDcgQEAgV0tB
cnJheVJlZiBXS0J1bmRsZVBhZ2VDb3B5Q29udGV4dE1lbnVJdGVtcyhXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZikKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBXZWJDb250ZXh0TWVudSog
Y29udGV4dE1lbnUgPSB0b0ltcGwocGFnZVJlZiktPmNvbnRleHRNZW51KCk7CiAKLSAgICByZXR1
cm4gdG9BUEkoY29udGV4dE1lbnVJdGVtcygqY29udGV4dE1lbnUpLmxlYWtSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKCZjb250ZXh0TWVudUl0ZW1zKCpjb250ZXh0TWVudSkubGVha1JlZigpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjEyLDcgKzIxMiw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQYWdlQ29weUNvbnRleHRNZW51
QXRQb2ludEluV2luZG93KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXCiAgICAgaWYgKCFjb250
ZXh0TWVudSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gdG9BUEkoY29u
dGV4dE1lbnVJdGVtcygqY29udGV4dE1lbnUpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJ
KCZjb250ZXh0TWVudUl0ZW1zKCpjb250ZXh0TWVudSkubGVha1JlZigpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VSZWYpOwogICAgIFVOVVNFRF9QQVJBTShwb2ludCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCBiZmVjZDMzZmFmMjVlOTk4
N2I4ZTViMDkxY2RjNzJhZTc5ZGIwMjE5Li4zYzA3ZDJlMDc4MWY0YzRjNTM5ODc5OTM4MDg0YTY5
ODVhZDY2Y2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAK
QEAgLTEzNyw3ICsxMzcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgRERBY3Rpb25Db250ZXh0
ICphY3Rpb25Db250ZXh0ID0gKEREQWN0aW9uQ29udGV4dCAqKW1fY2xpZW50LmFjdGlvbkNvbnRl
eHRGb3JSZXN1bHRBdFBvaW50KHRvQVBJKCZwYWdlT3ZlcmxheSksIFdLUG9pbnRNYWtlKGxvY2F0
aW9uLngoKSwgbG9jYXRpb24ueSgpKSwgJmFwaVJhbmdlLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogCiAgICAgICAgICAgICBpZiAoYXBpUmFuZ2UpCi0gICAgICAgICAgICAgICAgcmFuZ2VI
YW5kbGUgPSB0b0ltcGwoYXBpUmFuZ2UpLT5jb3JlUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICBy
YW5nZUhhbmRsZSA9ICZ0b0ltcGwoYXBpUmFuZ2UpLT5jb3JlUmFuZ2UoKTsKIAogICAgICAgICAg
ICAgcmV0dXJuIGFjdGlvbkNvbnRleHQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3Js
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlU2NyaXB0V29ybGQuY3BwCmluZGV4IGI3YmQ4YjMwMmIzMTcyZTFmZTNiYzhjYmM1Mzli
OGFmOTA2MjRhZTAuLmI0MDljNTlkNmQ1OTEyNTJjOWY3OGUyZjYzYjViMDEzNWU3ZTRhZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVNjcmlwdFdvcmxkLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3Js
ZCgpCiAKIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgV0tCdW5kbGVTY3JpcHRXb3JsZE5vcm1hbFdv
cmxkKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6bm9y
bWFsV29ybGQoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
Ojpub3JtYWxXb3JsZCgpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVNjcmlwdFdvcmxkQ2xlYXJXcmFw
cGVycyhXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHNjcmlwdFdvcmxkUmVmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFNj
cmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRTY3JpcHRXb3JsZC5jcHAKaW5kZXggZGMwOTVlMGQ3YTkwMGI0ZDZmYzc5
ZTE3NWMyYzc4MDlmM2RlZjZjMS4uOGQ0Yzk3OGJlMDM2YjBkYjFlZGZjZGYwNTUyMDgxODc0ZWFh
MzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0U2NyaXB0V29ybGQuY3BwCkBAIC05
OSwxMCArOTksMTAgQEAgdm9pZCB3ZWJraXRTY3JpcHRXb3JsZFdpbmRvd09iamVjdENsZWFyZWQo
V2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkLCBXZWJLaXRXZWJQYWcKICAgICBnX3NpZ25hbF9lbWl0
KHdvcmxkLCBzaWduYWxzW1dJTkRPV19PQkpFQ1RfQ0xFQVJFRF0sIDAsIHBhZ2UsIGZyYW1lKTsK
IH0KIAotc3RhdGljIFdlYktpdFNjcmlwdFdvcmxkKiB3ZWJraXRTY3JpcHRXb3JsZENyZWF0ZShQ
YXNzUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IHNjcmlwdFdvcmxkKQorc3RhdGlj
IFdlYktpdFNjcmlwdFdvcmxkKiB3ZWJraXRTY3JpcHRXb3JsZENyZWF0ZShSZWY8SW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZD4mJiBzY3JpcHRXb3JsZCkKIHsKICAgICBXZWJLaXRTY3JpcHRXb3Js
ZCogd29ybGQgPSBXRUJLSVRfU0NSSVBUX1dPUkxEKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9T
Q1JJUFRfV09STEQsIE5VTEwpKTsKLSAgICB3b3JsZC0+cHJpdi0+c2NyaXB0V29ybGQgPSBzY3Jp
cHRXb3JsZDsKKyAgICB3b3JsZC0+cHJpdi0+c2NyaXB0V29ybGQgPSBXVEZNb3ZlKHNjcmlwdFdv
cmxkKTsKIAogICAgIEFTU0VSVCghc2NyaXB0V29ybGRzKCkuY29udGFpbnMod29ybGQtPnByaXYt
PnNjcmlwdFdvcmxkLmdldCgpKSk7CiAgICAgc2NyaXB0V29ybGRzKCkuYWRkKHdvcmxkLT5wcml2
LT5zY3JpcHRXb3JsZC5nZXQoKSwgd29ybGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xh
cmF0aW9uSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5jcHAKaW5kZXgg
MmE4ZjE3YTRhY2Y4NmIyNzc5MmRiZGUzN2Q3M2ZiMDViNWI2MDc2Ni4uZTAxMWY2MmUwM2ZjYmE3
MzBkZTQxNzc1ODY5NjM1MDNhZDAzM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0
aW9uSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGUuY3BwCkBAIC00
MiwxNCArNDIsMTQgQEAgc3RhdGljIERPTUhhbmRsZUNhY2hlJiBkb21IYW5kbGVDYWNoZSgpCiAg
ICAgcmV0dXJuIGNhY2hlOwogfQogCi1QYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbkhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxl
OjpnZXRPckNyZWF0ZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZURlY2xhcmF0aW9uKQorUmVm
UHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4gSW5qZWN0ZWRCdW5k
bGVDU1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlOjpnZXRPckNyZWF0ZShDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZURlY2xhcmF0aW9uKQogewogICAgIGlmICghc3R5bGVEZWNsYXJhdGlvbikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBET01IYW5kbGVDYWNoZTo6QWRkUmVzdWx0IHJl
c3VsdCA9IGRvbUhhbmRsZUNhY2hlKCkuYWRkKHN0eWxlRGVjbGFyYXRpb24sIG51bGxwdHIpOwog
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4ocmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgYXV0
byBzdHlsZURlY2xhcmF0aW9uSGFuZGxlID0gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZUNT
U1N0eWxlRGVjbGFyYXRpb25IYW5kbGUoKnN0eWxlRGVjbGFyYXRpb24pKTsKICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5wdHIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9u
SGFuZGxlLmgKaW5kZXggODRjOTNjMWVkNzQ0YWM4NjdiMzM4ZTZmNTQ0MDBmZGYxOTliM2NmMS4u
OTVkOTIwY2FiYzI4YzdmNTk0OTk3ZWQ5NjI2NWI1OWRlMzgyMTk3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVD
U1NTdHlsZURlY2xhcmF0aW9uSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uSGFu
ZGxlLmgKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVDU1NTdHlsZURl
Y2xhcmF0aW9uSGFuZGxlX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEluamVjdGVkQnVu
ZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJ
OjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25IYW5kbGU+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUNTU1N0eWxlRGVjbGFyYXRp
b25IYW5kbGU+IGdldE9yQ3JlYXRlKFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZT4g
Z2V0T3JDcmVhdGUoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiopOwogICAgIHZpcnR1YWwg
fkluamVjdGVkQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvbkhhbmRsZSgpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCAx
YTM0YTkxNDRjN2UyODcyZjAzZDg5ZThjNmY5ZTgxOGFiN2RjNjlkLi5mNzRhMTIxMWEyM2IzMDMx
ZTM3NmNjMzdmMTZjYTNmMTMwMjRmNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3Rl
ZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtNTcsNDIgKzU3LDQyIEBAIHN0YXRpYyBET01IYW5k
bGVDYWNoZSYgZG9tSGFuZGxlQ2FjaGUoKQogICAgIHJldHVybiBjYWNoZTsKIH0KIAotUGFzc1Jl
ZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
OjpnZXRPckNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0KQor
UmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OmdldE9yQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3Qp
CiB7CiAgICAgUmFuZ2UqIHJhbmdlID0gSlNSYW5nZTo6dG9XcmFwcGVkKHRvSlMoY29udGV4dCkt
PnZtKCksIHRvSlMob2JqZWN0KSk7CiAgICAgcmV0dXJuIGdldE9yQ3JlYXRlKHJhbmdlKTsKIH0K
IAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpnZXRPckNyZWF0ZShSYW5nZSogcmFuZ2UpCitSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoUmFu
Z2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIERPTUhhbmRsZUNhY2hlOjpBZGRSZXN1bHQgcmVzdWx0
ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQocmFuZ2UsIG51bGxwdHIpOwogICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGU+KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgICAgICByZXR1cm4gcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOjpjcmVhdGUocmFuZ2UpOworICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUoKnJhbmdlKTsKICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlID0gcmFuZ2VIYW5kbGUucHRyKCk7CiAgICAgcmV0dXJuIFdURk1vdmUocmFuZ2VI
YW5kbGUpOwogfQogCi1SZWY8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gSW5qZWN0ZWRCdW5k
bGVSYW5nZUhhbmRsZTo6Y3JlYXRlKFJhbmdlKiByYW5nZSkKK1JlZjxJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlPiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpjcmVhdGUoUmFuZ2UmIHJhbmdl
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUo
cmFuZ2UpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6SW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZShSYW5nZSogcmFuZ2UpCitJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlKFJhbmdlJiByYW5nZSkKICAgICA6IG1fcmFuZ2UocmFuZ2Up
CiB7CiB9CiAKIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6On5JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlKCkKIHsKLSAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZShtX3JhbmdlLmdldCgpKTsK
KyAgICBkb21IYW5kbGVDYWNoZSgpLnJlbW92ZShtX3JhbmdlLnB0cigpKTsKIH0KIAotUmFuZ2Uq
IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmNvcmVSYW5nZSgpIGNvbnN0CitSYW5nZSYgSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Y29yZVJhbmdlKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9yYW5nZS5nZXQoKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBXZWJDb3JlOjpJbnRSZWN0IElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OmJvdW5kaW5nUmVjdEluV2luZG93Q29vcmRpbmF0ZXMo
KSBjbwogICAgIHJldHVybiBmcmFtZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KGVuY2xvc2lu
Z0ludFJlY3QoYm91bmRpbmdSZWN0KSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlv
bnMpCitSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVk
SW1hZ2UoU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgRG9jdW1lbnQmIG93bmVyRG9j
dW1lbnQgPSBtX3JhbmdlLT5vd25lckRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gb3du
ZXJEb2N1bWVudC5mcmFtZSgpOwpAQCAtMTIzLDcgKzEyMyw3IEBAIFBhc3NSZWZQdHI8V2ViSW1h
Z2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRp
b25zIG9wCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsKIAogICAgIFZpc2libGVT
ZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwot
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqbV9y
YW5nZSkpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihtX3JhbmdlKSk7CiAKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IChvcHRpb25zICYgU25h
cHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSA/IDEgOiBmcmFtZS0+cGFnZSgp
LT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIEludFJlY3QgcGFpbnRSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChtX3JhbmdlLT5hYnNvbHV0ZUJvdW5kaW5nUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaAppbmRleCA2NDdiMWMyNDRhOTM2ZDNlN2Mw
OTNmZDVkN2JhNDQwMjQ0M2VhNjE3Li5mODBlMzNhYmU4MDY1MWQ5NzkxOGI4ZGJmYTE0OWU0NjFm
NTZiYzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5o
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDYsMjQgKzQ1LDI0IEBAIGNsYXNzIFdlYkltYWdlOwogCiBjbGFz
cyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6QnVuZGxlUmFuZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShKU0NvbnRl
eHRSZWYsIEpTT2JqZWN0UmVmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOworICAgIHN0YXRpYyBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZT4gZ2V0T3JDcmVhdGUoSlNDb250ZXh0UmVm
LCBKU09iamVjdFJlZik7CisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOwogCiAgICAgdmlydHVhbCB+SW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZSgpOwogCiAgICAgUmVmPEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZT4gZG9jdW1lbnQoKTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRpbmdSZWN0SW5XaW5k
b3dDb29yZGluYXRlcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVk
SW1hZ2UoU25hcHNob3RPcHRpb25zKTsKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1h
Z2UoU25hcHNob3RPcHRpb25zKTsKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OwogCi0gICAgV2Vi
Q29yZTo6UmFuZ2UqIGNvcmVSYW5nZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OlJhbmdlJiBjb3Jl
UmFuZ2UoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSopOwotICAgIEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpSYW5nZSYpOworICAgIEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUoV2ViQ29yZTo6UmFuZ2UmKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpS
YW5nZT4gbV9yYW5nZTsKKyAgICBSZWY8V2ViQ29yZTo6UmFuZ2U+IG1fcmFuZ2U7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOTJiNmZkYjFm
YTY5OTM5ZWY5ZWU1N2IzOTJmNWUzZTY3ODAwMDNmNi4uNjFkOWNjMDdjOGU4OTBhOTMwOTgxZmM3
YTg0NDk0MzNiNDExOGU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTg4LDcgKzg4LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVhdGUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0
aW9uVXNlckRhdGEpCitSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IEluamVjdGVkQnVuZGxlOjpjcmVh
dGUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQVBJOjpP
YmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAgICAgYXV0byBidW5kbGUgPSBhZG9w
dFJlZigqbmV3IEluamVjdGVkQnVuZGxlKHBhcmFtZXRlcnMpKTsKIApAQCAtNTcyLDcgKzU3Miw3
IEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlOjp3ZWJOb3RpZmljYXRpb25JRChKU0NvbnRleHRS
ZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzCiB9CiAKIC8vIEZJWE1FIEdldCByaWQgb2YgdGhp
cyBmdW5jdGlvbiBhbmQgbW92ZSBpdCBpbnRvIFdLQnVuZGxlLmNwcC4KLVBhc3NSZWZQdHI8QVBJ
OjpEYXRhPiBJbmplY3RlZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpCitSZWY8QVBJOjpEYXRhPiBJbmplY3Rl
ZEJ1bmRsZTo6Y3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIGRhdGEpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSA9IHRv
SlMoY29udGV4dCk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5RGF0YSA9IFdlYkNvcmU6
OnRvVW5zaGFyZWRVaW50OEFycmF5KGV4ZWNTdGF0ZS0+dm0oKSwgdG9KUyhleGVjU3RhdGUsIGRh
dGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCAwMDA1NTBiZmYyNDFjYzA1ZDY1NGNlOGYxMTY5
ZGUyYTcyYzYzMWEwLi44ZjMzN2NjOWYzMGJiYzhkYzcwMTY4NDQ4MWM5NWYyODE1OWE4YThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiV0tCdW5kbGUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VHlwZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJTY3JpcHRUeXBlcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGUgOiBwdWJsaWMg
QVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGU+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZT4gY3JlYXRlKGNvbnN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSk7CisgICAgc3RhdGljIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gY3JlYXRlKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSk7CiAKICAgICB+SW5qZWN0ZWRCdW5kbGUoKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3Zl
QWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSopOwogICAgIHVpbnQ2NF90IHdl
Yk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7Ci0gICAgUGFzc1JlZlB0
cjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJheShKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYpOworICAgIFJlZjxBUEk6OkRhdGE+IGNyZWF0ZVdlYkRhdGFGcm9tVWludDhBcnJh
eShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiAgICAgLy8gVXNlckNvbnRlbnQgQVBJCiAg
ICAgdm9pZCBhZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiwgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgQVBJ
OjpBcnJheSogd2hpdGVsaXN0LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXgg
ZTg3OTA1YmNhMmMzZDk2ZGJjOWY5MTI1ZGVlZWI2MDg3ZGQ4Mzg2Yi4uM2YyNjA4NGIxZTRlN2Ji
NWFjMDllMDYxMmMwZTdkNTdlZmVhNGI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtPiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdDo6
aXRlbUF0SW5kZXgoaW50IGluZGV4KSBjb25zdAorUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4
KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFBhZ2UqIHBhZ2UgPSBtX3BhZ2UtPmNvcmVQ
YWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6
Y3JlYXRlKHBhZ2UtPmJhY2tGb3J3YXJkKCkuaXRlbUF0SW5kZXgoaW5kZXgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5oCmluZGV4IGE0NGQwYjk2
MjAwYjAyMzFlNmI5ZWE3MTFkYzA4YmJhMjQ1NzE2MGMuLjllZGFmYWFjN2VmOTc4Mjc3ODQ3ZWFl
ZDdjODAwMDk5MDgxODVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3RfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC00MiwxMSArNDIsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdChwYWdlKSk7CiAgICAgfQogCi0gICAg
dm9pZCBkZXRhY2goKSB7IG1fcGFnZSA9IDA7IH0KKyAgICB2b2lkIGRldGFjaCgpIHsgbV9wYWdl
ID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgUGFzc1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGl0ZW1BdEluZGV4KGludCkgY29uc3Q7Cisg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gaXRlbUF0SW5kZXgo
aW50KSBjb25zdDsKICAgICBpbnQgYmFja0xpc3RDb3VudCgpIGNvbnN0OwogICAgIGludCBmb3J3
YXJkTGlzdENvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDQyODI3ZjZmNGZlZWUxNTQ3ZTliNmQ4ZGU1NjAz
MTRkMWM1M2QxYmQuLjE1ZTZhNTcxYjY1ZWZkNDMxNWRlOWVjODliMTM1YjdmZDJkOTA0OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaApA
QCAtMzksMTEgKzM5LDExIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGl0ZW0pCisgICAgc3RhdGljIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0+IGNyZWF0ZShSZWZQdHI8V2ViQ29y
ZTo6SGlzdG9yeUl0ZW0+JiYgaXRlbSkKICAgICB7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0SXRlbShpdGVtKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0oV1RGTW92ZShpdGVtKSkpOwogICAgIH0KIAogICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBpdGVtKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtLmdldCgpOyB9CkBAIC02MCw3ICs2MCw5
IEBAIHB1YmxpYzoKICAgICBSZWY8QVBJOjpBcnJheT4gY2hpbGRyZW4oKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0oUGFzc1JlZlB0cjxX
ZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSkgOiBtX2l0ZW0oaXRlbSkgeyB9CisgICAgZXhwbGlj
aXQgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKFJlZlB0cjxXZWJDb3JlOjpIaXN0
b3J5SXRlbT4mJiBpdGVtKQorICAgICAgICA6IG1faXRlbShXVEZNb3ZlKGl0ZW0pKQorICAgIHsg
fQogCiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBtX2l0ZW07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDgyNmQzNzIxOWJi
MDZhODY3ZTZmYjE3NDU0OGM3YzA4ZTA3MzBmNTUuLjcyYWU3NzI3ZDQ1ZTRmZGE5NzE5MzI1Mjlm
Mjk3ZjgxNzMzNTY0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBSZWY8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0PiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShjb25zdCBIaXRUZQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdChoaXRUZXN0
UmVzdWx0KSk7CiB9CiAKLVBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6Om5vZGVIYW5kbGUoKSBjb25zdAorUmVmUHRyPEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojpub2RlSGFu
ZGxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRP
ckNyZWF0ZShtX2hpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpOwogfQogCi1QYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0Ojp1cmxFbGVtZW50SGFuZGxlKCkgY29uc3QKK1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU+IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6dXJsRWxlbWVudEhhbmRsZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUo
bV9oaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuaAppbmRleCAyNTgyYjQ3ZGRmOTlhNzdmODZkODRlNDgxZmM3YjRm
MDUxZDkwMjcyLi4xNGUzZTY3Mzg2ZjU1NWYwZGE4N2UyMDI1OGMxN2RiMmExMTcwZjczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHRNZWRpYVR5cGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw4ICs0NCw4
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGNvcmVIaXRU
ZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0OyB9CiAKLSAgICBQYXNz
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSgpIGNvbnN0OwotICAg
IFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiB1cmxFbGVtZW50SGFuZGxlKCkg
Y29uc3Q7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSgp
IGNvbnN0OworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IHVybEVsZW1lbnRI
YW5kbGUoKSBjb25zdDsKICAgICBXZWJGcmFtZSogZnJhbWUoKSBjb25zdDsKICAgICBXZWJGcmFt
ZSogdGFyZ2V0RnJhbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDM1NjlmZDg3NWJlODZjOTU4NmYwZWU3YjI1MDAx
M2M5N2MzYzUzZGUuLjc2ZDUwNjhmNTkyNzk5YmIyMDUyYmI4ZGRiYWUyMDE2NWVhODgxOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKQEAg
LTk3LDEyICs5NywxMiBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpzeW50aGV0aWNDbGljawogICAgIHJldHVybiBzeW50
aGV0aWNDbGlja1R5cGVGb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnRGb3JOYXZpZ2F0aW9uQWN0aW9u
KG5hdmlnYXRpb25BY3Rpb24pKTsKIH0KIAotUmVmPEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdGUpCitSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
KGZyYW1lLCBhY3Rpb24sIGZvcm1TdGF0ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihmcmFtZSwgYWN0aW9uLCBXVEZNb3ZlKGZvcm1T
dGF0ZSkpKTsKIH0KIAotSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQor
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb24oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9u
QWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKICAgICA6IG1fbmF2aWdhdGlv
blR5cGUobmF2aWdhdGlvbkFjdGlvbi50eXBlKCkpCiAgICAgLCBtX21vZGlmaWVycyhtb2RpZmll
cnNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKQogICAgICwgbV9tb3VzZUJ1
dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGIzNzY2ZTMyNjFhMDBlODE1YTllNjM1NmUyOWFl
YjE1MmFhODYxYmIuLmZhNmEyYTU0OGI3NmRmNzBhYzQ1NmZiYjE2YTRmNzcwMDQyMjE4YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgogI2luY2x1
ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0NSw3IEBA
IGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24g
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24+IGNyZWF0ZShXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOworICAgIHN0YXRpYyBSZWY8
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBjcmVhdGUoV2ViRnJhbWUqLCBjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4mJik7
CiAKICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2Vi
TW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICBBdG9taWNTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2Rvd25s
b2FkQXR0cmlidXRlOyB9CiAKIHByaXZhdGU6Ci0gICAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPik7CisgICAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFJlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+JiYpOwogCiAgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUg
bV9uYXZpZ2F0aW9uVHlwZTsKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1fbW9kaWZpZXJzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDViYTQ3Y2MzODNjZGE4MjQwMmE0N2VjOWQ5NTc3YTk1MGMwZGZmZTkuLmUyNWIwNzFiMjExOWFi
NTcwNDUzNGY0NzY5NjZlMmEzMDkxNmYzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShX
ZWJQYWdlKiBwYWdlLAogICAgIGlmICghbV9jbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQuZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgIG1fY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUodG9B
UEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6
Z2V0T3JDcmVhdGUod29ybGQpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKaW5kZXggOWUxMWE3NjI4ODFjMDA2NmFk
YmFkODVhMGJkN2Y2NzMyNjUyMTcyOS4uYjE3ODMxZDJjN2E5NDNkYzRkNmMzNDU1MWQzMmJiMGIy
ZjQ4NmZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwCkBA
IC02MSwyMCArNjEsMjAgQEAgUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG4KICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKFNjcmlwdENvbnRyb2xsZXI6OmNy
ZWF0ZVdvcmxkKCksIG5hbWUpKTsKIH0KIAotUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkPiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZShET01XcmFwcGVy
V29ybGQmIHdvcmxkKQorUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6OmdldE9yQ3JlYXRlKERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCiB7CiAg
ICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVy
biBub3JtYWxXb3JsZCgpOwogCiAgICAgaWYgKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIGV4
aXN0aW5nV29ybGQgPSBhbGxXb3JsZHMoKS5nZXQoJndvcmxkKSkKLSAgICAgICAgcmV0dXJuIGV4
aXN0aW5nV29ybGQ7CisgICAgICAgIHJldHVybiAqZXhpc3RpbmdXb3JsZDsKIAotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCh3b3JsZCwgdW5pcXVlV29y
bGROYW1lKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkKHdvcmxkLCB1bmlxdWVXb3JsZE5hbWUoKSkpOwogfQogCi1JbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpCitJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxX
b3JsZCgpCiB7Ci0gICAgc3RhdGljIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkID0g
YWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQobWFpblRocmVhZE5vcm1hbFdv
cmxkKCksIFN0cmluZygpKSkubGVha1JlZigpOworICAgIHN0YXRpYyBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkJiB3b3JsZCA9IGFkb3B0UmVmKCpuZXcgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgU3RyaW5nKCkpKS5sZWFrUmVmKCk7CiAgICAgcmV0
dXJuIHdvcmxkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oCmlu
ZGV4IGZlNzk2ZjZlODUzYzNiOGJkY2VkZDUzMmE0OGUyNjgzOTg2NDhlY2IuLjUwOTJhZTcyNTc2
ZWNhMTg2YjJiNTQ4NmJkZjVmMTZkYTk2Nzk1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGRfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSw4ICs0MSw4IEBAIGNs
YXNzIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCdW5kCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBnZXRPckNyZWF0ZShXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQmKTsKLSAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogbm9ybWFs
V29ybGQoKTsKKyAgICBzdGF0aWMgUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IGdldE9y
Q3JlYXRlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpOworICAgIHN0YXRpYyBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiBub3JtYWxXb3JsZCgpOwogCiAgICAgdmlydHVhbCB+SW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAxN2Qz
NWM5NGEwOTFjODE2N2M1ZTdjN2ZmNzM0NThkZDliNzUxN2NiLi5hNGQ3ZjFhOTBjYzkwMjkxYTc3
MTA5ZDE2ODFmZTI0YmIzMzIwNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTUz
LDE4ICs1MywxOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIFRoZSBwbHVnLWluIHRoYXQgd2Un
cmUgY3VycmVudGx5IGNhbGxpbmcgTlBQX05ldyBmb3IuCiBzdGF0aWMgTmV0c2NhcGVQbHVnaW4q
IGN1cnJlbnROUFBOZXdQbHVnaW47CiAKLVJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gTmV0c2NhcGVQ
bHVnaW46OmNyZWF0ZShQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBwbHVnaW5Nb2R1
bGUpCitSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IE5ldHNjYXBlUGx1Z2luOjpjcmVhdGUoUmVmUHRy
PE5ldHNjYXBlUGx1Z2luTW9kdWxlPiYmIHBsdWdpbk1vZHVsZSkKIHsKICAgICBpZiAoIXBsdWdp
bk1vZHVsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOZXRzY2FwZVBsdWdpbihwbHVnaW5Nb2R1bGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBOZXRzY2FwZVBsdWdpbihwbHVnaW5Nb2R1bGUucmVsZWFzZU5vbk51bGwoKSkpOwogfQog
ICAgIAotTmV0c2NhcGVQbHVnaW46Ok5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnaW5Nb2R1bGU+IHBsdWdpbk1vZHVsZSkKK05ldHNjYXBlUGx1Z2luOjpOZXRzY2FwZVBsdWdp
bihSZWY8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYgcGx1Z2luTW9kdWxlKQogICAgIDogUGx1Z2lu
KE5ldHNjYXBlUGx1Z2luVHlwZSkKICAgICAsIG1fbmV4dFJlcXVlc3RJRCgwKQotICAgICwgbV9w
bHVnaW5Nb2R1bGUocGx1Z2luTW9kdWxlKQorICAgICwgbV9wbHVnaW5Nb2R1bGUoV1RGTW92ZShw
bHVnaW5Nb2R1bGUpKQogICAgICwgbV9ucFdpbmRvdygpCiAgICAgLCBtX2lzU3RhcnRlZChmYWxz
ZSkKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTExMDIsNyArMTEwMiw3IEBAIFNjcm9sbGJhciog
TmV0c2NhcGVQbHVnaW46OnZlcnRpY2FsU2Nyb2xsYmFyKCkKIGJvb2wgTmV0c2NhcGVQbHVnaW46
OnN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QKIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICByZXR1cm4gbV9wbHVnaW5Nb2R1bGUgJiYgbV9wbHVnaW5Nb2R1bGUtPnBsdWdpblF1aXJrcygp
LmNvbnRhaW5zKFBsdWdpblF1aXJrczo6U3VwcG9ydHNTbmFwc2hvdHRpbmcpOworICAgIHJldHVy
biBtX3BsdWdpbk1vZHVsZS0+cGx1Z2luUXVpcmtzKCkuY29udGFpbnMoUGx1Z2luUXVpcmtzOjpT
dXBwb3J0c1NuYXBzaG90dGluZyk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCmluZGV4IDc4MjI3ZjVmOTRmNGFjNzRkYTA1NTYwZWI0NjQyNzZlNDMx
ZGE0YTkuLjA3YzhiMDg2YWI4OWVkOTdhZjQ0MjI0OWY4YTc4MTJmY2ZjYjllOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIE5ldHNjYXBlUGx1Z2luVW5p
eDsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW4gOiBwdWJsaWMgUGx1Z2luIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBjcmVhdGUoUGFzc1JlZlB0cjxOZXRzY2Fw
ZVBsdWdpbk1vZHVsZT4pOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGNyZWF0
ZShSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYpOwogICAgIHZpcnR1YWwgfk5ldHNjYXBl
UGx1Z2luKCk7CiAKICAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBmcm9tTlBQKE5Q
UCk7CkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkludFBvaW50IGNv
bnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgTmV0c2NhcGVQbHVnaW4oUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdp
bk1vZHVsZT4gcGx1Z2luTW9kdWxlKTsKKyAgICBleHBsaWNpdCBOZXRzY2FwZVBsdWdpbihSZWY8
TmV0c2NhcGVQbHVnaW5Nb2R1bGU+JiYpOwogCiAgICAgdm9pZCBjYWxsU2V0V2luZG93KCk7CiAg
ICAgdm9pZCBjYWxsU2V0V2luZG93SW52aXNpYmxlKCk7CkBAIC0yODYsNyArMjg2LDcgQEAgcHJp
dmF0ZToKICAgICBTdHJlYW1zTWFwIG1fc3RyZWFtczsKICAgICBIYXNoTWFwPHZvaWQqLCBzdGQ6
OnBhaXI8UmVmUHRyPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiwgU3RyaW5nPj4gbV9yZWRpcmVjdHM7
CiAKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1Z2luTW9kdWxlOworICAg
IFJlZjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gbV9wbHVnaW5Nb2R1bGU7CiAgICAgTlBQX3QgbV9u
cHA7CiAgICAgTlBXaW5kb3cgbV9ucFdpbmRvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaAppbmRl
eCBmNjMzOTcwMWU2NjAxMDllMjkxYThmYzBjNWI5MWE0OTg5YTM0ZWJlLi5hZmRhMTcxMTNhNjU3
M2I0MGY1ZTQyZGRkMDMyNDJkOWVhZGQ1ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24uaApAQCAt
NDYsNyArNDYsNyBAQCBjbGFzcyBQREZQbHVnaW47CiAKIGNsYXNzIFBERlBsdWdpbkFubm90YXRp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxQREZQbHVnaW5Bbm5vdGF0aW9uPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90
YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOworICAgIHN0YXRpYyBS
ZWZQdHI8UERGUGx1Z2luQW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5
ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOwogICAgIHZpcnR1YWwgflBERlBsdWdpbkFubm90
YXRpb24oKTsKIAogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnQuZ2V0KCk7IH0KQEAgLTc1LDcgKzc1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCopOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxl
bWVudCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5v
dGF0aW9uRWxlbWVudCgpID0gMDsKIAogICAgIGNsYXNzIFBERlBsdWdpbkFubm90YXRpb25FdmVu
dExpc3RlbmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luQW5ub3RhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luQW5ub3RhdGlvbi5tbQppbmRleCA0MjJiZGFjNDliNGY4ODFjYWZhMjgzNWI3MTYy
YmRlOGI2MWI5YjFjLi43NGRjYmM4Mzc5MTRjNDM3NzJkYWFkNzU5Y2UxYWZiZDc3MDY5YmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bkFubm90YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCkBAIC01MiwxNCArNTIsMTQgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVBhc3NSZWZQdHI8UERGUGx1
Z2luQW5ub3RhdGlvbj4gUERGUGx1Z2luQW5ub3RhdGlvbjo6Y3JlYXRlKFBERkFubm90YXRpb24g
KmFubm90YXRpb24sIFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5ZXJDb250cm9sbGVyLCBQREZQ
bHVnaW4qIHBsdWdpbikKK1JlZlB0cjxQREZQbHVnaW5Bbm5vdGF0aW9uPiBQREZQbHVnaW5Bbm5v
dGF0aW9uOjpjcmVhdGUoUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9s
bGVyICpwZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQogewogICAgIGlmIChb
YW5ub3RhdGlvbiBpc0tpbmRPZkNsYXNzOnBkZkFubm90YXRpb25UZXh0V2lkZ2V0Q2xhc3MoKV0p
CiAgICAgICAgIHJldHVybiBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRlKGFubm90YXRp
b24sIHBkZkxheWVyQ29udHJvbGxlciwgcGx1Z2luKTsKICAgICBpZiAoW2Fubm90YXRpb24gaXNL
aW5kT2ZDbGFzczpwZGZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0Q2xhc3MoKV0pCiAgICAgICAgIHJl
dHVybiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGUoYW5ub3RhdGlvbiwgcGRmTGF5
ZXJDb250cm9sbGVyLCBwbHVnaW4pOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIHZvaWQgUERGUGx1Z2luQW5ub3RhdGlvbjo6YXR0YWNoKEVsZW1lbnQqIHBhcmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKaW5kZXggNmFmODdjZDdmOTJiNjgw
ZjEyZTQyNzgwM2M4NjYyZWM1ZWUyYmI5NC4uMGY3Njc1YzVkMjMxZDU3ZDkyYmQ2Mjc5MzZlOWUw
MjRkMmUxYzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRlOworICAgIFJlZjxX
ZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRlOwogCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFu
bm90YXRpb24ubW0KaW5kZXggMjczNTAzMjUyZjAwNjhmYmFmZGRkYmYzZmQ5ZWUyMjRiNmY2Y2Y1
Yy4uZGJlNWFlOTc1MWZlZGM4YzhkZjIyMTMwZjRiYWUzYTAzOTFkYmRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFBERlBsdWdp
bkNob2ljZUFubm90YXRpb246OmNvbW1pdCgpCiAgICAgUERGUGx1Z2luQW5ub3RhdGlvbjo6Y29t
bWl0KCk7CiB9CiAKLVBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlv
bjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKQorUmVmPEVsZW1lbnQ+IFBERlBsdWdpbkNob2lj
ZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKIHsKICAgICBEb2N1bWVudCYg
ZG9jdW1lbnQgPSBwYXJlbnQoKS0+ZG9jdW1lbnQoKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCkBAIC03NCwxMyArNzQsMTMgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiAgICAgUERGQW5ub3Rh
dGlvbkNob2ljZVdpZGdldCAqY2hvaWNlQW5ub3RhdGlvbiA9IHRoaXMtPmNob2ljZUFubm90YXRp
b24oKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAotICAgIFJlZlB0cjxFbGVtZW50
PiBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzZWxlY3RUYWcsIGZhbHNlKTsKKyAg
ICBhdXRvIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHNlbGVjdFRhZywgZmFsc2Up
OwogCi0gICAgU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxl
ZEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKyAgICBhdXRvJiBzdHlsZWRFbGVtZW50ID0gZG93
bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudC5nZXQoKSk7CiAKICAgICAvLyBGSVhNRTogTWF0
Y2ggZm9udCB3ZWlnaHQgYW5kIHN0eWxlIGFzIHdlbGw/Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKGNo
b2ljZUFubm90YXRpb24uZm9udENvbG9yKS5zZXJpYWxpemVkKCkpOwotICAgIHN0eWxlZEVsZW1l
bnQtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBjaG9pY2VB
bm5vdGF0aW9uLmZvbnQuZmFtaWx5TmFtZSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGNvbG9yRnJvbU5TQ29sb3IoY2hvaWNlQW5u
b3RhdGlvbi5mb250Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgY2hvaWNlQW5ub3RhdGlv
bi5mb250LmZhbWlseU5hbWUpOwogCiAgICAgTlNBcnJheSAqY2hvaWNlcyA9IGNob2ljZUFubm90
YXRpb24uY2hvaWNlczsKICAgICBOU1N0cmluZyAqc2VsZWN0ZWRDaG9pY2UgPSBjaG9pY2VBbm5v
dGF0aW9uLnN0cmluZ1ZhbHVlOwpAQCAtOTMsNyArOTMsNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IFBERlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICAg
ICAgICAgaWYgKGNob2ljZSA9PSBzZWxlY3RlZENob2ljZSkKICAgICAgICAgICAgIGNob2ljZU9w
dGlvbi0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzZWxlY3RlZEF0dHIsIEF0
b21pY1N0cmluZygic2VsZWN0ZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KSk7CiAKLSAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBwZW5kQ2hpbGQoY2hvaWNlT3B0aW9uKTsK
KyAgICAgICAgc3R5bGVkRWxlbWVudC5hcHBlbmRDaGlsZChjaG9pY2VPcHRpb24pOwogICAgIH0K
IAogICAgIHJldHVybiBlbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaAppbmRleCAx
NjMyNTBhZGJjNTgwNThlZDNiMDZmYjViMDk1YjA2MTRhMWZlMjgwLi4zNmUyZTgyYjNiMjgwYThm
NjFiYWE3YzUyNzViOWRhNzQ3MzhiNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaApA
QCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJpZGU7Cisg
ICAgUmVmPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW5QYXNzd29yZEZpZWxkLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tCmluZGV4IDBhOTA3MDc2NDY3NjBhOWQzYmVk
ODY3NjEzYTFmYzYxM2NjMDg0NmQuLjY3Nzg0ODlkOGMwMWM2ZTIzN2NlNWQ2NGY1YzcyMTlhNDI5
MDM4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQubW0KQEAgLTUzLDkgKzUzLDkgQEAg
UERGUGx1Z2luUGFzc3dvcmRGaWVsZDo6flBERlBsdWdpblBhc3N3b3JkRmllbGQoKQogICAgIGVs
ZW1lbnQoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgKmV2
ZW50TGlzdGVuZXIoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdp
blBhc3N3b3JkRmllbGQ6OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKK1JlZjxFbGVtZW50PiBQ
REZQbHVnaW5QYXNzd29yZEZpZWxkOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCiB7Ci0gICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5ub3RhdGlvbjo6Y3JlYXRl
QW5ub3RhdGlvbkVsZW1lbnQoKTsKKyAgICBhdXRvIGVsZW1lbnQgPSBQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbjo6Y3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKTsKICAgICBlbGVtZW50LT5zZXRBdHRy
aWJ1dGUodHlwZUF0dHIsICJwYXNzd29yZCIpOwogICAgIGVsZW1lbnQtPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmtleXVwRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKICAg
ICByZXR1cm4gZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaAppbmRleCBhOGU2
MmU5Y2M1MTY1OGFiZTU1NThmOWMwZDcyZjhjMDFjZWQ5ZTE4Li4wY2FlNmYwMGZlZTcwMTE4N2My
NDc0YThlN2UyMThhMWMyYTI3NThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCkBA
IC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRlOwor
ICAgIFJlZjxXZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJy
aWRlOwogICAgIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3Rh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
VGV4dEFubm90YXRpb24ubW0KaW5kZXggYmNmOWM1NWVhMjMzMzMwMjU2ZTYxOWU1ZWU1YmRhZGI3
NjcxMmUzZC4uNzEwOTQ1ZWFkMzExNzE0ZTNiZjZhNjI5YTk5NDA2ZjZiMzM4NzMzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0
QW5ub3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpblRleHRBbm5vdGF0aW9uLm1tCkBAIC03OSwxMCArNzksOCBAQCBQREZQbHVnaW5U
ZXh0QW5ub3RhdGlvbjo6flBERlBsdWdpblRleHRBbm5vdGF0aW9uKCkKICAgICBlbGVtZW50KCkt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleWRvd25FdmVudCwgKmV2ZW50TGlz
dGVuZXIoKSwgZmFsc2UpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IFBERlBsdWdpblRleHRB
bm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpCitSZWY8RWxlbWVudD4gUERGUGx1
Z2luVGV4dEFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKIHsKLSAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudDsKLQogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHBhcmVudCgp
LT5kb2N1bWVudCgpOwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtOTAs
MjcgKzg4LDIzIEBAIFBhc3NSZWZQdHI8RWxlbWVudD4gUERGUGx1Z2luVGV4dEFubm90YXRpb246
OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
ICAgICBib29sIGlzTXVsdGlsaW5lID0gdGV4dEFubm90YXRpb24uaXNNdWx0aWxpbmU7CiAKLSAg
ICBpZiAoaXNNdWx0aWxpbmUpCi0gICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KHRleHRhcmVhVGFnLCBmYWxzZSk7Ci0gICAgZWxzZQotICAgICAgICBlbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudChpbnB1dFRhZywgZmFsc2UpOwotCisgICAgYXV0byBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpc011bHRpbGluZSA/IHRleHRhcmVhVGFnIDogaW5w
dXRUYWcsIGZhbHNlKTsKICAgICBlbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQsICpldmVudExpc3RlbmVyKCksIGZhbHNlKTsKIAotICAgIFN0eWxlZEVs
ZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVu
dC5nZXQoKSk7CisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1l
bnQ+KGVsZW1lbnQuZ2V0KCkpOwogCiAgICAgaWYgKCF0ZXh0QW5ub3RhdGlvbikKICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CiAKICAgICAvLyBGSVhNRTogTWF0Y2ggZm9udCB3ZWlnaHQgYW5kIHN0
eWxlIGFzIHdlbGw/Ci0gICAgc3R5bGVkRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUNvbG9yLCBjb2xvckZyb21OU0NvbG9yKHRleHRBbm5vdGF0aW9uLmZvbnRDb2xv
cikuc2VyaWFsaXplZCgpKTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRpb24uZm9udC5mYW1pbHlOYW1l
KTsKLSAgICBzdHlsZWRFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dEFsaWduLCBjc3NBbGlnbm1lbnRWYWx1ZUZvck5TVGV4dEFsaWdubWVudCh0ZXh0QW5ub3Rh
dGlvbi5hbGlnbm1lbnQpKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlDb2xvciwgY29sb3JGcm9tTlNDb2xvcih0ZXh0QW5ub3RhdGlvbi5mb250
Q29sb3IpLnNlcmlhbGl6ZWQoKSk7CisgICAgc3R5bGVkRWxlbWVudC5zZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgdGV4dEFubm90YXRpb24uZm9udC5mYW1pbHlO
YW1lKTsKKyAgICBzdHlsZWRFbGVtZW50LnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUZXh0QWxpZ24sIGNzc0FsaWdubWVudFZhbHVlRm9yTlNUZXh0QWxpZ25tZW50KHRleHRBbm5v
dGF0aW9uLmFsaWdubWVudCkpOwogCiAgICAgaWYgKGlzTXVsdGlsaW5lKQotICAgICAgICBkb3du
Y2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50PihzdHlsZWRFbGVtZW50KS0+c2V0VmFsdWUodGV4dEFu
bm90YXRpb24uc3RyaW5nVmFsdWUpOworICAgICAgICBkb3duY2FzdDxIVE1MVGV4dEFyZWFFbGVt
ZW50PihzdHlsZWRFbGVtZW50KS5zZXRWYWx1ZSh0ZXh0QW5ub3RhdGlvbi5zdHJpbmdWYWx1ZSk7
CiAgICAgZWxzZQotICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihzdHlsZWRFbGVt
ZW50KS0+c2V0VmFsdWUodGV4dEFubm90YXRpb24uc3RyaW5nVmFsdWUpOworICAgICAgICBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PihzdHlsZWRFbGVtZW50KS5zZXRWYWx1ZSh0ZXh0QW5ub3Rh
dGlvbi5zdHJpbmdWYWx1ZSk7CiAKICAgICByZXR1cm4gZWxlbWVudDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCA4NDZlOGJkZmJlOTNkMTZhMjgxYmJmMmFhYzNj
MTFiNzZjZDMyMWI3Li4xYzg2YTgwMDZkYmUyYWFjNDc1MDhmYTdhNzQ4MDkwN2M2M2M1NGIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHR5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkPiwgdW5zaWduZWQ+CiAKIHN0YXRpYyBXb3JsZE1hcCYgd29ybGRNYXAoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4geyB7IDEsIHN0ZDo6bWFrZV9wYWlyKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEpIH0gfSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAoc3RkOjppbml0aWFsaXplcl9saXN0PFdv
cmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgMSwgc3RkOjptYWtlX3BhaXIoJkluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEpIH0gfSk7CiAKICAgICByZXR1cm4g
bWFwOwogfQpAQCAtMjA4LDkgKzIwOCw5IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYKICNpZiBF
TkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogY2xhc3MgV2ViVXNlck1lc3NhZ2VIYW5kbGVy
RGVzY3JpcHRvclByb3h5IDogcHVibGljIFdlYkNvcmU6OlVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVzZXJNZXNzYWdlSGFu
ZGxlckRlc2NyaXB0b3JQcm94eT4gY3JlYXRlKFdlYlVzZXJDb250ZW50Q29udHJvbGxlciogY29u
dHJvbGxlciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3
b3JsZCwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICBzdGF0aWMgUmVmPFdlYlVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JQcm94eT4gY3JlYXRlKFdlYlVzZXJDb250ZW50Q29udHJvbGxlciog
Y29udHJvbGxlciwgY29uc3QgU3RyaW5nJiBuYW1lLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
JiB3b3JsZCwgdWludDY0X3QgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclByb3h5KGNvbnRyb2xsZXIs
IG5hbWUsIHdvcmxkLCBpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JQcm94eShjb250cm9sbGVyLCBuYW1lLCB3
b3JsZCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldlYlVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3JQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpp
bmRleCA1ZjQ1NjU0ZWY3YjQwMjg2YmJkZWFiNThmMmUyZTJjMDg5OTY5ZWU3Li5lNTAwN2M5Mzg4
NDYyZmNkNzQwMjY0MmYzZWNlZTM0YWY3MmI5ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KQEAgLTU5LDcgKzU5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29u
dmVydEltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZy
YW1lJiBmcmFtZSkKK3N0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0SW1hZ2VU
b0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1l
KQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgZmxhZ3MgPSBTaGFyZWFibGVCaXRtYXA6
OlN1cHBvcnRzQWxwaGE7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEyMDAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjb252ZXJ0SW1hZ2VUb0JpdG1hcChOU0ltYWdlICppbWFnZSwgY29uc3QgSW4KIAogICAgIFtO
U0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpzYXZlZENvbnRleHQuZ2V0KCldOwog
Ci0gICAgcmV0dXJuIFdURk1vdmUoYml0bWFwKTsKKyAgICByZXR1cm4gYml0bWFwOwogfQogCiB2
b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBlMTE3ODI1NDkzNGFhNTBk
NDhlMmY3YWYzNDU1YjJjMzUyZTRiMzEuLjhmZTMwMmE5ZmZlMzA1NmJjMTVkMzEyOGUyZDAxYzdi
NGU1MzkwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTU3OTMsMTQgKzU3OTMsMTQgQEAgdm9pZCBXZWJQYWdlOjphZGRVc2VyU2NyaXB0
KGNvbnN0IFN0cmluZyYgc291cmNlLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnIKIHsK
ICAgICBXZWJDb3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHR7IHNvdXJjZSwgV2ViQ29yZTo6Ymxh
bmtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGlt
ZSwgaW5qZWN0ZWRGcmFtZXMgfTsKIAotICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRV
c2VyU2NyaXB0KCpJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZN
b3ZlKHVzZXJTY3JpcHQpKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclNj
cmlwdChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCBXVEZNb3ZlKHVz
ZXJTY3JpcHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIHNvdXJjZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3Rl
ZEZyYW1lcykKIHsKICAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldHsg
c291cmNlLCBXZWJDb3JlOjpibGFua1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3Ry
aW5nPigpLCBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVsIH07CiAKLSAgICBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQoKkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKKyAgICBt
X3VzZXJDb250ZW50Q29udHJvbGxlci0+YWRkVXNlclN0eWxlU2hlZXQoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6bm9ybWFsV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5jcHAKaW5kZXggMWE1ZTEwMmVjNjM0OTM5NTZlMjA2ZjdlNmIzNWMzNWRiZjQzN2Q1NC4u
YzhjOTNiMmI5MDU4N2RjMDY5NmZjNWRhNmJhYzQ0MDIzYTM3NTFjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9w
ZXJhdGlvbkd0ay5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBzdHJ1Y3QgUHJpbnRQYWdlc0RhdGEg
ewogICAgIGJvb2wgaXNWYWxpZCA6IDE7CiB9OwogCi1QYXNzUmVmUHRyPFdlYlByaW50T3BlcmF0
aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvKQorUmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBXZWJQ
cmludE9wZXJhdGlvbkd0azo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvKQogewogI2lmIEhBVkUoR1RLX1VOSVhfUFJJTlRJTkcpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJQcmludE9wZXJhdGlvbkd0a1VuaXgocGFnZSwgcHJpbnRJbmZvKSk7CkBA
IC0zODgsNyArMzg4LDcgQEAgUGFzc1JlZlB0cjxXZWJQcmludE9wZXJhdGlvbkd0az4gV2ViUHJp
bnRPcGVyYXRpb25HdGs6OmNyZWF0ZShXZWJQYWdlKiBwYWdlLCBjb24KICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2UpOwogICAgIFVOVVNFRF9QQVJBTShwcmludEluZm8pOwotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuaAppbmRleCBmNWZlYzEwNmNhMjc5NGI1Njc1NjE4NTNmYTgzMTE0NjE5MDUxYzQ0Li43NDNj
YzJjZTUyNTg5N2QxOTA3YjgyZWJmYjI0MTIzZDgyMjMwNDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlv
bkd0ay5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJQcmludEluZm8uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHR5cGVkZWYgc3RydWN0IF9HdGtQcmludFNl
dHRpbmdzIEd0a1ByaW50U2V0dGluZ3M7CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIFdlYlByaW50T3BlcmF0aW9uR3RrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUHJp
bnRPcGVyYXRpb25HdGs+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcmlu
dE9wZXJhdGlvbkd0az4gY3JlYXRlKFdlYlBhZ2UqLCBjb25zdCBQcmludEluZm8mKTsKKyAgICBz
dGF0aWMgUmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBjcmVhdGUoV2ViUGFnZSosIGNvbnN0
IFByaW50SW5mbyYpOwogICAgIHZpcnR1YWwgfldlYlByaW50T3BlcmF0aW9uR3RrKCk7CiAKICAg
ICBXZWJDb3JlOjpQcmludENvbnRleHQqIHByaW50Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpbnRDb250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDVjZjExMDhiZDA3MDNiOThhMDZkMjY3MjM1YjA5
NGNiMDExOTQ5MS4uOTFiOGYyMzUwMDgxMDZhMTU2YTM1Y2RhYjM4MDViNWEwOGFkOTVjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVy
ZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW4KICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVy
ZVR5cGUsIGdlc3R1cmVTdGF0ZSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZsYWdzKSwgY2FsbGJh
Y2tJRCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb3NpdGlvbihG
cmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlz
U3RhcnQpCitzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvc2l0aW9uKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgYm9vbCBiYXNlSXNTdGFydCkKIHsK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQgPSBw
b3NpdGlvbjsKQEAgLTEyMDMsMTAgKzEyMDMsMTAgQEAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+
IHJhbmdlRm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHAK
ICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUtPmRvY3VtZW50KCksIHJl
c3VsdCwgc2VsZWN0aW9uRW5kKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmFuZ2UucmVsZWFzZSgp
OworICAgIHJldHVybiByYW5nZTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
QXRXb3JkQm91bmRhcnlGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQsIFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJl
Y3Rpb24pCitzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRp
b24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBib29sIGJh
c2VJc1N0YXJ0LCBTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIFNlbGVjdGlv
bkRpcmVjdGlvbiBzYW1lRGlyZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJlY3Rpb25Gb3J3YXJk
IDogRGlyZWN0aW9uQmFja3dhcmQ7CiAgICAgU2VsZWN0aW9uRGlyZWN0aW9uIG9wcG9zaXRlRGly
ZWN0aW9uID0gYmFzZUlzU3RhcnQgPyBEaXJlY3Rpb25CYWNrd2FyZCA6IERpcmVjdGlvbkZvcndh
cmQ7CkBAIC0xMjE2LDcgKzEyMTYsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VB
dFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgVmlzaQogCiAgICAg
aWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgV29yZEdyYW51bGFyaXR5LCBzYW1l
RGlyZWN0aW9uKSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeS4gTGVhdmUg
c2VsZWN0aW9uIHdoZXJlIGl0IGlzLgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVu
dCwgV29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVjdGlvbikpIHsKQEAgLTEyNTEsNyArMTI1
MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9z
aXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBWaXNpCiAgICAgaWYgKGV4dGVudC5pc051bGwoKSB8
fCBleHRlbnQgPT0gYmFzZSkKICAgICAgICAgZXh0ZW50ID0gd29yZEJvdW5kYXJ5OwogICAgIGlm
IChleHRlbnQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIHJldHVybiAoYmFzZSA8IGV4dGVudCkgPyBSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS0+ZG9jdW1lbnQoKSwgYmFzZSwgZXh0ZW50KSA6IFJhbmdlOjpjcmVhdGUoKmZyYW1lLT5kb2N1
bWVudCgpLCBleHRlbnQsIGJhc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUu
aAppbmRleCA2MzM5YjIyMzA2NjM4ZTAyZjBmMDlmMWNmZTg3MmUxNTYzYjc0OWI1Li4xODdjMWQ4
MzFhZGE4MDAzOGJmMTc3NzlkNmI2YjljZThjZGJlOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUuaApAQCAtMTYzLDkgKzE2Myw5IEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgS2V5ZnJhbWVWYWx1ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbj4gdmFsdWUpCisgICAgICAgIEtleWZyYW1lVmFsdWUoUmVmUHRyPFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbj4mJiB2YWx1ZSkKICAgICAgICAgICAgIDoga2V5VHlwZShGaWx0ZXJL
ZXlUeXBlKQotICAgICAgICAgICAgLCBmaWx0ZXIodmFsdWUpCisgICAgICAgICAgICAsIGZpbHRl
cihXVEZNb3ZlKHZhbHVlKSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5tbQppbmRleCBiMTAwMzcwNDkwMjFlMjY4MmZjZDlhYWMzYTEzYTEx
YzhjNjc4NzQ3Li5iMjljYWE2NjJjMmQ3YWJlY2NjMDhhMTc3ZWJlMDY3NDE1MzhiNGU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC02NTAsOCArNjUwLDggQEAgdm9p
ZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+PiYKICAgICBWZWN0b3I8S2V5ZnJhbWVWYWx1ZT4ga2V5ZnJhbWVz
OwogICAgIGtleWZyYW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHZhbHVlcy5zaXplKCkpOwog
ICAgIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKQotICAg
ICAgICBrZXlmcmFtZXMudW5jaGVja2VkQXBwZW5kKEtleWZyYW1lVmFsdWUodmFsdWVzW2ldKSk7
CisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykKKyAgICAgICAga2V5ZnJhbWVzLnVuY2hl
Y2tlZEFwcGVuZChLZXlmcmFtZVZhbHVlIHsgdmFsdWUuY29weVJlZigpIH0pOwogICAgIAogICAg
IG1fcHJvcGVydGllcy5rZXlWYWx1ZXMgPSBXVEZNb3ZlKGtleWZyYW1lcyk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>