<?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>94207</bug_id>
          
          <creation_ts>2012-08-16 01:54:34 -0700</creation_ts>
          <short_desc>DirectoryEntry should use Dictionary rather than custom bindings code</short_desc>
          <delta_ts>2012-08-16 13:45:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>ericu</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696918</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 01:54:34 -0700</bug_when>
    <thetext>DirectoryEntry should use Dictionary rather than custom bindings code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696922</commentid>
    <comment_count>1</comment_count>
      <attachid>158752</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 01:56:02 -0700</bug_when>
    <thetext>Created attachment 158752
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696923</commentid>
    <comment_count>2</comment_count>
      <attachid>158753</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 01:57:22 -0700</bug_when>
    <thetext>Created attachment 158753
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696943</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 02:40:48 -0700</bug_when>
    <thetext>Attachment 158753 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/Modules/filesystem/WebKitFlags.h:31:  #ifndef header guard has wrong style, please use: WebKitFlags_h  [build/header_guard] [5]
Total errors found: 1 in 15 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>696947</commentid>
    <comment_count>4</comment_count>
      <attachid>158753</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-16 02:48:29 -0700</bug_when>
    <thetext>Comment on attachment 158753
work in progress

Attachment 158753 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13504920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696950</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-16 02:53:29 -0700</bug_when>
    <thetext>Sorry, I made a mess of your bug. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696955</commentid>
    <comment_count>6</comment_count>
      <attachid>158753</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 02:59:12 -0700</bug_when>
    <thetext>Comment on attachment 158753
work in progress

Attachment 158753 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13516315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697221</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 09:40:57 -0700</bug_when>
    <thetext>&gt; Sorry, I made a mess of your bug. :(

It&apos;s ok.  Yeah, this patch isn&apos;t done.  I just wanted to post it before heading to bed do I didn&apos;t lose it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697327</commentid>
    <comment_count>8</comment_count>
      <attachid>158866</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 11:49:11 -0700</bug_when>
    <thetext>Created attachment 158866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697435</commentid>
    <comment_count>9</comment_count>
      <attachid>158866</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-16 13:26:46 -0700</bug_when>
    <thetext>Comment on attachment 158866
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697466</commentid>
    <comment_count>10</comment_count>
      <attachid>158866</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 13:44:54 -0700</bug_when>
    <thetext>Comment on attachment 158866
Patch

Clearing flags on attachment: 158866

Committed r125807: &lt;http://trac.webkit.org/changeset/125807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697467</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 13:45:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158752</attachid>
            <date>2012-08-16 01:56:02 -0700</date>
            <delta_ts>2012-08-16 01:57:19 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-94207-20120816015527.patch</filename>
            <type>text/plain</type>
            <size>33795</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkNzc1ZjBhZjU1MzFh
YjdiY2E4YjQ0OGVlMjhkMDhmYWIzYmI1NS4uMTcwNDg4MTFkOGZmNDkwZDk1YzMwOGQ3YjIyOTVk
YTgzYWJmZjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA4LTE2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlyZWN0b3J5RW50cnkgc2hv
dWxkIHVzZSBEaWN0aW9uYXJ5IHJhdGhlciB0aGFuIGN1c3RvbSBiaW5kaW5ncyBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoaXMgY29k
ZSB3YXMgd3JpdHRlbiwgd2UgYWRkZWQgbmF0aXZlIHN1cHBvcnQgZm9yIFdlYklETAorICAgICAg
ICBEaWN0aW9uYXJ5IG9iamVjdHMuIFRoaXMgcGF0Y2ggbW92ZXMgRGlyZWN0b3J5RW50cnkgdG8g
dXNlIHRoaXMKKyAgICAgICAgYXV0b21hdGljIGZhY2lsaXR5IGluc3RlYWQgb2YgY3VzdG9tIGNv
ZGUuCisKKyAgICAgICAgQSBmb2xsb3d1cCBwYXRjaCB3aWxsIGRlbGV0ZSB0aGUgZW1wdHkgZmls
ZXMgZnJvbSB0aGUgYnVpbGQgc3lzdGVtcy4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
QmFzZTo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0
RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJh
c2UuaDoKKyAgICAgICAgKERPTUZpbGVTeXN0ZW1CYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5
RW50cnk6OmdldEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5RW50cnk6OmdldERp
cmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6
CisgICAgICAgIChEaXJlY3RvcnlFbnRyeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3luYzo6
Z2V0RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVj
dG9yeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5o
OgorICAgICAgICAoRGlyZWN0b3J5RW50cnlTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc29sdmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZsYWdzOjpGaWxlU3lzdGVtRmxhZ3MpOgor
ICAgICAgICAoRmlsZVN5c3RlbUZsYWdzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpcmVj
dG9yeUVudHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVu
dHJ5U3luY0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0
b3J5RW50cnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVj
dG9yeUVudHJ5U3luY0N1c3RvbS5jcHA6CisKIDIwMTItMDgtMTUgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVmYWN0b3Jpbmc6IEludHJv
ZHVjZSBhIG5ldyBmdW5jdGlvbiBmb3Igc29tZSBwYXJ0IG9mIFBvcHVwQ29udGFpbmVyOjpsYXlv
dXRBbmRDYWxjdWxhdGVXaWRnZXRSZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCmluZGV4IGQ5MzhiODAyNTYw
ODVkNDBjY2VhNDY0NGIwNTY5YmEyOTk4MjVmMzcuLmE2ZWU2NDI1NTkyNzI4MGVkZmViMGJlYWM5
ZmI2NThiMDM2N2YxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcApAQCAtMjIyLDI5ICsyMjIsMjkgQEAgYm9v
bCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBET01GaWxl
U3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2Uq
IGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1GbGFncyYgZmxhZ3Ms
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIGFic29sdXRlUGF0aDsK
ICAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aChtX3R5cGUsIGVudHJ5LCBwYXRoLCBhYnNvbHV0
ZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBPd25QdHI8RW50cnlDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsKLSAgICBpZiAoZmxhZ3Mg
JiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVG
aWxlKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwgZmxhZ3MtPmlzRXhjbHVzaXZl
KCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGlmIChmbGFncy5jcmVhdGUpCisgICAgICAg
IG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1
dGVQYXRoKSwgZmxhZ3MuZXhjbHVzaXZlLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKICAgICBlbHNl
CiAgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoYWJzb2x1dGVQYXRoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldERpcmVjdG9yeShjb25zdCBFbnRyeUJh
c2UqIGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6
Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgRmlsZVN5c3RlbUZsYWdzJiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykK
IHsKICAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOwogICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRo
KG1fdHlwZSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFj
a3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRl
UGF0aCwgdHJ1ZSk7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGNyZWF0ZUZpbGVTeXN0ZW1VUkwo
YWJzb2x1dGVQYXRoKSwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkp
OworICAgIGlmIChmbGFncy5jcmVhdGUpCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVh
dGVEaXJlY3RvcnkoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBmbGFncy5leGNs
dXNpdmUsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhjcmVhdGVGaWxlU3lzdGVtVVJMKGFic29sdXRlUGF0
aCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAppbmRl
eCBhMzdjYWIwNGI4ZTVkYTQ3YTIyNjY0MDQ0Mjk0YTExMTBlY2JmYTFjLi5hOWY4NGRmOWU2ZDM4
MDVhZTI5Y2I1ZWRhZWY5NjIyYzQ2YzA3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaApAQCAtOTgsOCArOTgsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmUoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICBib29sIHJlbW92
ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgYm9vbCBnZXRQYXJlbnQoY29uc3QgRW50
cnlCYXNlKiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7Ci0gICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSosIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgZ2V0RGlyZWN0b3J5KGNvbnN0
IEVudHJ5QmFzZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4s
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwor
ICAgIGJvb2wgZ2V0RmlsZShjb25zdCBFbnRyeUJhc2UqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IEZpbGVTeXN0ZW1GbGFncyYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wgZ2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFz
ZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgYm9vbCBy
ZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4sIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAKaW5kZXggMGY2ZTQ5ZjQ0MjNhMDQ4ZTU1YjNk
YWFiMjgwODBhZTM5MzNlNjFkYS4uZGZmYzgwM2ZiOTI1NWY1YzhhZWM0NGI1MDE4MTA1YjA3OGI2
NzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuY3BwCkBAIC01MSwxNSArNTEsMTcgQEAgUGFzc1JlZlB0cjxEaXJlY3RvcnlS
ZWFkZXI+IERpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoKQogICAgIHJldHVybiBEaXJlY3Rv
cnlSZWFkZXI6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwogfQogCi12b2lkIERp
cmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJL
aXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCit2b2lkIERpcmVj
dG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKIHsKKyAgICBSZWZQdHI8V2Vi
S2l0RmxhZ3M+IGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZShvcHRpb25zKTsKICAgICBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKICAgICBp
ZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKSkKICAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxi
YWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6
OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogfQogCi12b2lkIERpcmVjdG9yeUVudHJ5Ojpn
ZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBm
bGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3ZvaWQgRGlyZWN0b3J5RW50cnk6
OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlv
bnMsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCiB7CisgICAgUmVmUHRyPFdlYktpdEZs
YWdzPiBmbGFncyA9IFdlYktpdEZsYWdzOjpjcmVhdGUob3B0aW9ucyk7CiAgICAgUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFja1JlZik7CiAgICAgaWYgKCFt
X2ZpbGVTeXN0ZW0tPmdldERpcmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrKSkKICAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVsZUNhbGxi
YWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6
OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaAppbmRleCBiMjc0MTFhODYxYmRjMGJhM2Yy
ODA4OTU2Mzc3OWU1NWNkOWM5YTk0Li5lYzg5NDZlNTliZmY1ZGYyNDU4ZGY4YmFkOTI3YjU0MjBi
MDU5OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUGFzc1JlZlB0cjxE
aXJlY3RvcnlSZWFkZXI+IGNyZWF0ZVJlYWRlcigpOwotICAgIHZvaWQgZ2V0RmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+ID0gMCwgUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKLSAgICB2b2lk
IGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+
ID0gMCwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gPSAwKTsKKyAgICB2b2lkIGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBE
aWN0aW9uYXJ5JiA9IERpY3Rpb25hcnkoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAs
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKTsKKyAgICB2b2lkIGdldERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmID0gRGljdGlvbmFyeSgpLCBQYXNz
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDAp
OwogICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayA9IDAsIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gPSAwKSBjb25zdDsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5RW50cnkuaWRsCmluZGV4IGM2YzlhZTliYjE4YzRjN2M2YTM2ZWQ4YmEzN2JjNWQz
MDQyNzYyMDguLmI0NzM3YjQxZDBjZjBiNzMzZmM0Njg0Yjk1MDE1YzQxNjQxODgzNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5
LmlkbApAQCAtMzYsOCArMzYsOCBAQCBtb2R1bGUgc3RvcmFnZSB7CiAgICAgICAgIEpTTm9TdGF0
aWNUYWJsZXMKICAgICBdIERpcmVjdG9yeUVudHJ5IDogRW50cnkgewogICAgICAgICBEaXJlY3Rv
cnlSZWFkZXIgY3JlYXRlUmVhZGVyKCk7Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0RmlsZShp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBmbGFncywgaW4gW09wdGlv
bmFsLCBDYWxsYmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25h
bCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7Ci0gICAgICAgIFtDdXN0
b21dIHZvaWQgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVu
ZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9uYWxdIFdlYktp
dEZsYWdzIGZsYWdzLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKTsKKyAgICAgICAgdm9pZCBnZXRGaWxlKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
LCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9u
YWxdIERpY3Rpb25hcnkgb3B0aW9ucywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRW50cnlDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJh
Y2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGluIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBw
YXRoLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25hcnkgb3B0aW9ucywgaW4gW09wdGlvbmFsLCBDYWxs
YmFja10gRW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJh
Y2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZvaWQgcmVtb3ZlUmVj
dXJzaXZlbHkoaW4gW0NhbGxiYWNrXSBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBb
T3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAgIH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwCmluZGV4IDEwZGVhY2ViMDk2OWI3YmEwMTE2ZDJjZmYwMzc3OTg0
YjQ4ZGYxYTAuLjA5NjBlZWQzNmI2ZjM3NDIwOWQwNWJhNGJjMWRhZjRmZGRmMDFiMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5
bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlF
bnRyeVN5bmMuY3BwCkBAIC01MSw5ICs1MSwxMCBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRl
clN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Y3JlYXRlUmVhZGVyKEV4Y2VwdGlvbkNvZGUmKQog
ICAgIHJldHVybiBEaXJlY3RvcnlSZWFkZXJTeW5jOjpjcmVhdGUobV9maWxlU3lzdGVtLCBtX2Z1
bGxQYXRoKTsKIH0KIAotUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5
bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBm
bGFncywgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVj
dG9yeUVudHJ5U3luYzo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKKyAgICBGaWxl
U3lzdGVtRmxhZ3MgZmxhZ3Mob3B0aW9ucyk7CiAgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIg
aGVscGVyKG1fZmlsZVN5c3RlbS0+YXN5bmNGaWxlU3lzdGVtKCkpOwogICAgIGlmICghbV9maWxl
U3lzdGVtLT5nZXRGaWxlKHRoaXMsIHBhdGgsIGZsYWdzLCBoZWxwZXIuc3VjY2Vzc0NhbGxiYWNr
KCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CiAgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlv
bjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwpAQCAtNjIsOSArNjMsMTAgQEAgUGFzc1JlZlB0
cjxGaWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmUKICAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxGaWxlRW50cnlT
eW5jPihoZWxwZXIuZ2V0UmVzdWx0KGVjKSk7CiB9CiAKLVBhc3NSZWZQdHI8RGlyZWN0b3J5RW50
cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKKyAgICBGaWxlU3lzdGVtRmxhZ3MgZmxhZ3Mo
b3B0aW9ucyk7CiAgICAgRW50cnlTeW5jQ2FsbGJhY2tIZWxwZXIgaGVscGVyKG1fZmlsZVN5c3Rl
bS0+YXN5bmNGaWxlU3lzdGVtKCkpOwogICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJlY3Rv
cnkodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2FsbGJhY2soKSwgaGVscGVyLmVy
cm9yQ2FsbGJhY2soKSkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpJTlZBTElEX01P
RElGSUNBVElPTl9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgKaW5kZXggYjlmN2E4NWNjY2FhMTBjYTJmZWY1ZWVk
YTQ4MGM3YWFlZjY5Y2Y0MC4uOTdhOGRjYjc1M2JlOTA0YWY5ZTkzNmU4N2NiNGRhM2JhNmZhMzk2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9y
eUVudHJ5U3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeVN5bmMuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUGFzc1JlZlB0
cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gZ2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NSZWZQdHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxE
aXJlY3RvcnlFbnRyeVN5bmM+IGdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8V2ViS2l0RmxhZ3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxGaWxl
RW50cnlTeW5jPiBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gZ2V0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KEV4Y2VwdGlvbkNvZGUmKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlFbnRyeVN5bmMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5U3luYy5pZGwKaW5kZXggNjZjMjg4ZmJiYzVhMmNlYTJjODNhNWE1MTMz
NjdkNjM2OWQ4NzQwNS4uMTNjM2FhYjVmMTBkOTU2ZGFkNmFlZTkyNjE2NGU5NWI5M2NmNGZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5U3luYy5pZGwKQEAgLTM2LDggKzM2LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAg
ICAgICBKU05vU3RhdGljVGFibGVzCiAgICAgXSBEaXJlY3RvcnlFbnRyeVN5bmMgOiBFbnRyeVN5
bmMgewogICAgICAgICBEaXJlY3RvcnlSZWFkZXJTeW5jIGNyZWF0ZVJlYWRlcigpIHJhaXNlcyAo
RmlsZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtDdXN0b21dIEZpbGVFbnRyeVN5bmMgZ2V0RmlsZShp
biBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBE
T01TdHJpbmcgcGF0aCwgaW4gV2ViS2l0RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2VwdGlv
bik7Ci0gICAgICAgIFtDdXN0b21dIERpcmVjdG9yeUVudHJ5U3luYyBnZXREaXJlY3RvcnkoaW4g
W1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9N
U3RyaW5nIHBhdGgsIGluIFdlYktpdEZsYWdzIGZsYWdzKSByYWlzZXMgKEZpbGVFeGNlcHRpb24p
OworICAgICAgICBGaWxlRW50cnlTeW5jIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIERpY3Rp
b25hcnkgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CisgICAgICAgIERpcmVjdG9yeUVu
dHJ5U3luYyBnZXREaXJlY3RvcnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5k
ZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIERpY3Rpb25hcnkgZmxhZ3Mp
IHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHko
KSByYWlzZXMgKEZpbGVFeGNlcHRpb24pOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKaW5k
ZXggYWIwODM0YjEyZDgwMjgzNTE5MjcyYzA4OTQwNWI0NzdlYmYyZTQzMS4uOWQ4MWEyMjQ2YzMy
NWJmYmI5OWVjZjMzY2U4MjBjOTRlNjk3NmI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAtMTcz
LDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChlcnJvcik7CiAgICAg
ICAgIGlmIChlcnJvci0+Y29kZSgpID09IEZpbGVFcnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIpCi0g
ICAgICAgICAgICBtX3Jvb3QtPmdldEZpbGUobV9maWxlUGF0aCwgMCwgbV9zdWNjZXNzQ2FsbGJh
Y2ssIG1fZXJyb3JDYWxsYmFjayk7CisgICAgICAgICAgICBtX3Jvb3QtPmdldEZpbGUobV9maWxl
UGF0aCwgRGljdGlvbmFyeSgpLCBtX3N1Y2Nlc3NDYWxsYmFjaywgbV9lcnJvckNhbGxiYWNrKTsK
ICAgICAgICAgZWxzZSBpZiAobV9lcnJvckNhbGxiYWNrKQogICAgICAgICAgICAgbV9lcnJvckNh
bGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE1
LDcgKzIxNSw3IEBAIHZvaWQgUmVzb2x2ZVVSSUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0o
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiByb290CiB7CiAgICAgQVNTRVJUKGFzeW5j
RmlsZVN5c3RlbSk7CiAgICAgUmVmUHRyPERpcmVjdG9yeUVudHJ5PiByb290ID0gRE9NRmlsZVN5
c3RlbTo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQoKSwgbmFtZSwgbV90eXBl
LCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pLT5yb290KCk7Ci0gICAgcm9vdC0+Z2V0RGlyZWN0
b3J5KG1fZmlsZVBhdGgsIDAsIG1fc3VjY2Vzc0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrV3JhcHBl
cjo6Y3JlYXRlKG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJhY2ssIHJvb3QsIG1fZmls
ZVBhdGgpKTsKKyAgICByb290LT5nZXREaXJlY3RvcnkobV9maWxlUGF0aCwgRGljdGlvbmFyeSgp
LCBtX3N1Y2Nlc3NDYWxsYmFjaywgRXJyb3JDYWxsYmFja1dyYXBwZXI6OmNyZWF0ZShtX3N1Y2Nl
c3NDYWxsYmFjaywgbV9lcnJvckNhbGxiYWNrLCByb290LCBtX2ZpbGVQYXRoKSk7CiB9CiAKIC8v
IE1ldGFkYXRhQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL1dlYktpdEZsYWdzLmgKaW5kZXggYTc1YjQ3MjMwMTRkMjIxNjg1NDYyOGE2Yzg2ODI4ZTg2
ODI2YzA4Ni4uOGU4NTUwNjhkNTc4YzhiNWRhZTBkOGUxNzBhODVjMDExZWI2NTJlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmgKQEAgLTI4
LDQwICsyOCwzMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYktpdEZsYWdz
X2gKLSNkZWZpbmUgV2ViS2l0RmxhZ3NfaAorI2lmbmRlZiBGaWxlU3lzdGVtRmxhZ3NfaAorI2Rl
ZmluZSBGaWxlU3lzdGVtRmxhZ3NfaAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgIkRpY3Rpb25hcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJL
aXRGbGFncyA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdEZsYWdzPiB7Ci1wdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGNyZWF0ZShib29sIGNyZWF0ZSA9IGZhbHNl
LCBib29sIGV4Y2x1c2l2ZSA9IGZhbHNlKQorLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZpbGUgdG8g
RmlsZVN5c3RlbUZsYWdzCitzdHJ1Y3QgRmlsZVN5c3RlbUZsYWdzICB7CisgICAgZXhwbGljaXQg
RmlsZVN5c3RlbUZsYWdzKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCisgICAgICAgIDogY3Jl
YXRlKGZhbHNlKQorICAgICAgICAsIGV4Y2x1c2l2ZShmYWxzZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViS2l0RmxhZ3MoY3JlYXRlLCBleGNsdXNpdmUpKTsKKyAgICAg
ICAgb3B0aW9ucy5nZXQoImNyZWF0ZSIsIGNyZWF0ZSk7CisgICAgICAgIG9wdGlvbnMuZ2V0KCJl
eGNsdXNpdmUiLCBleGNsdXNpdmUpOwogICAgIH0KIAotICAgIGJvb2wgaXNDcmVhdGUoKSBjb25z
dCB7IHJldHVybiBtX2NyZWF0ZTsgfQotICAgIHZvaWQgc2V0Q3JlYXRlKGJvb2wgY3JlYXRlKSB7
IG1fY3JlYXRlID0gY3JlYXRlOyB9Ci0gICAgYm9vbCBpc0V4Y2x1c2l2ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhjbHVzaXZlOyB9Ci0gICAgdm9pZCBzZXRFeGNsdXNpdmUoYm9vbCBleGNsdXNpdmUp
IHsgbV9leGNsdXNpdmUgPSBleGNsdXNpdmU7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJLaXRGbGFn
cyhib29sIGNyZWF0ZSwgYm9vbCBleGNsdXNpdmUpCi0gICAgICAgIDogbV9jcmVhdGUoY3JlYXRl
KQotICAgICAgICAsIG1fZXhjbHVzaXZlKGV4Y2x1c2l2ZSkKLSAgICB7Ci0gICAgfQotICAgIGJv
b2wgbV9jcmVhdGU7Ci0gICAgYm9vbCBtX2V4Y2x1c2l2ZTsKKyAgICBib29sIGNyZWF0ZTsKKyAg
ICBib29sIGV4Y2x1c2l2ZTsKIH07CiAKLX0gLy8gbmFtZXNwYWNlCit9CiAKICNlbmRpZiAvLyBF
TkFCTEUoRklMRV9TWVNURU0pCiAKLSNlbmRpZiAvLyBXZWJLaXRGbGFnc19oCisjZW5kaWYgLy8g
RmlsZVN5c3RlbUZsYWdzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAKaW5kZXggNTEwMGE2ODQ1ZmQwOTgyODA1MDQxZmIx
ZTBhYWEyNjA5YTVmYTkxYi4uZjEyZDczMWQ3YzQwNDUxMDFmYzQwOTgwMGY3NGNlNDI0MTUxZTM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRy
eUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaXJlY3RvcnlF
bnRyeUN1c3RvbS5jcHAKQEAgLTI4LDExOSArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNs
dWRlICJKU0RpcmVjdG9yeUVudHJ5LmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNFbnRyeUNhbGxiYWNrLmgiCi0j
aW5jbHVkZSAiSlNFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgot
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU0RpcmVjdG9yeUVudHJ5OjpnZXRGaWxlKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwotCi0gICAgRGlyZWN0b3J5RW50cnkqIGltcCA9IHN0YXRpY19jYXN0PERpcmVj
dG9yeUVudHJ5Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgaW50IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKLSAgICBpZiAo
YXJnc0NvdW50IDw9IDEpIHsKLSAgICAgICAgaW1wLT5nZXRGaWxlKHBhdGgpOwotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNOdWxsKCkgJiYgIWV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkgJiYgZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkgewot
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7
Ci0gICAgICAgIGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZSgpOwotICAgICAgICBKU1ZhbHVl
IGpzQ3JlYXRlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiY3JlYXRlIikp
OwotICAgICAgICBmbGFncy0+c2V0Q3JlYXRlKGpzQ3JlYXRlLnRvQm9vbGVhbigpKTsKLSAgICAg
ICAgSlNWYWx1ZSBqc0V4Y2x1c2l2ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImV4Y2x1c2l2ZSIpKTsKLSAgICAgICAgZmxhZ3MtPnNldEV4Y2x1c2l2ZShqc0V4Y2x1c2l2
ZS50b0Jvb2xlYW4oKSk7Ci0gICAgfQotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjazsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMiAmJiAhZXhl
Yy0+YXJndW1lbnQoMikuaXNOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgyKS5pc09iamVjdCgpKSB7Ci0gICAg
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrID0gSlNFbnRyeUNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MikpLCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAzICYmICFleGVj
LT5hcmd1bWVudCgzKS5pc051bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMykuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDMpLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBlcnJvckNhbGxi
YWNrID0gSlNFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMykp
LCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotCi0gICAgaW1wLT5nZXRGaWxlKHBhdGgsIGZsYWdz
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotfQotCi1KU1ZhbHVlIEpTRGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKLQotICAgIERpcmVjdG9yeUVudHJ5KiBpbXAgPSBzdGF0aWNfY2FzdDxEaXJlY3RvcnlF
bnRyeSo+KGltcGwoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBwYXRoID0gdmFsdWVUb1N0cmluZ1dp
dGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Ci0gICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLQot
ICAgIGludCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7Ci0gICAgaWYgKGFyZ3ND
b3VudCA8PSAxKSB7Ci0gICAgICAgIGltcC0+Z2V0RGlyZWN0b3J5KHBhdGgpOwotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNOdWxsKCkgJiYgIWV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkgJiYgZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkgewot
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7
Ci0gICAgICAgIGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZSgpOwotICAgICAgICBKU1ZhbHVl
IGpzQ3JlYXRlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiY3JlYXRlIikp
OwotICAgICAgICBmbGFncy0+c2V0Q3JlYXRlKGpzQ3JlYXRlLnRvQm9vbGVhbigpKTsKLSAgICAg
ICAgSlNWYWx1ZSBqc0V4Y2x1c2l2ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImV4Y2x1c2l2ZSIpKTsKLSAgICAgICAgZmxhZ3MtPnNldEV4Y2x1c2l2ZShqc0V4Y2x1c2l2
ZS50b0Jvb2xlYW4oKSk7Ci0gICAgfQotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjazsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMiAmJiAhZXhl
Yy0+YXJndW1lbnQoMikuaXNOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgyKS5pc09iamVjdCgpKSB7Ci0gICAg
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrID0gSlNFbnRyeUNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MikpLCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAzICYmICFleGVj
LT5hcmd1bWVudCgzKS5pc051bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMykuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDMpLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBlcnJvckNhbGxi
YWNrID0gSlNFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMykp
LCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotCi0gICAgaW1wLT5nZXREaXJlY3RvcnkocGF0aCwg
ZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShGSUxFX1NZU1RFTSkKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20u
Y3BwCmluZGV4IDhkNTJhZjlhNmEwZGNhMjZjYzVlZTA2YTJlYmE4OTgyM2RhMTZmYjguLmRjOTQ4
NjM2Zjc4ZTE1MzJkYmI0ZjMzOTM2ZTBhNWUzMjVjMThkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAK
QEAgLTI4LDcxICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkpTRGlyZWN0b3J5
RW50cnlTeW5jLmgiCi0KLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0Vu
dHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJKU0Vycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJK
U0ZpbGVFbnRyeVN5bmMuaCIKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBu
YW1lc3BhY2UgSlNDOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBQYXNzUmVmUHRy
PFdlYktpdEZsYWdzPiBnZXRGbGFncyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEpTVmFsdWUmIGFy
Z3VtZW50KQotewotICAgIGlmIChhcmd1bWVudC5pc051bGwoKSB8fCBhcmd1bWVudC5pc1VuZGVm
aW5lZCgpIHx8ICFhcmd1bWVudC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IFJlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3M7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3Vt
ZW50LmdldE9iamVjdCgpOwotICAgIGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZSgpOwotICAg
IEpTVmFsdWUganNDcmVhdGUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJj
cmVhdGUiKSk7Ci0gICAgZmxhZ3MtPnNldENyZWF0ZShqc0NyZWF0ZS50b0Jvb2xlYW4oKSk7Ci0g
ICAgSlNWYWx1ZSBqc0V4Y2x1c2l2ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImV4Y2x1c2l2ZSIpKTsKLSAgICBmbGFncy0+c2V0RXhjbHVzaXZlKGpzRXhjbHVzaXZlLnRv
Qm9vbGVhbigpKTsKLSAgICByZXR1cm4gZmxhZ3M7Ci19Ci0KLUpTVmFsdWUgSlNEaXJlY3RvcnlF
bnRyeVN5bmM6OmdldEZpbGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIERpcmVjdG9yeUVudHJ5
U3luYyogaW1wID0gc3RhdGljX2Nhc3Q8RGlyZWN0b3J5RW50cnlTeW5jKj4oaW1wbCgpKTsKLSAg
ICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENo
ZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgUmVmUHRyPFdlYktpdEZs
YWdzPiBmbGFncyA9IGdldEZsYWdzKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpKTsKLSAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
ZXhlYywgdGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC0+Z2V0RmlsZShwYXRo
LCBmbGFncywgZWMpKSk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1KU1ZhbHVlIEpTRGlyZWN0b3J5RW50cnlTeW5jOjpnZXREaXJlY3Rv
cnkoRXhlY1N0YXRlKiBleGVjKQotewotICAgIERpcmVjdG9yeUVudHJ5U3luYyogaW1wID0gc3Rh
dGljX2Nhc3Q8RGlyZWN0b3J5RW50cnlTeW5jKj4oaW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcm
IHBhdGggPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncyA9IGdl
dEZsYWdzKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgdGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcC0+Z2V0RGlyZWN0b3J5KHBhdGgsIGZsYWdzLCBl
YykpKTsKLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKy8vIEZJWE1FOiBEZWxldGUgdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3Bw
CmluZGV4IDI2MDFkYzZiNWJjMDY1NzU2Y2ZkMTFkZWYyOWM0MDZjOGE4NWIyNGEuLmRjOTQ4NjM2
Zjc4ZTE1MzJkYmI0ZjMzOTM2ZTBhNWUzMjVjMThkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5j
cHAKQEAgLTI4LDExMiArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiVjhEaXJlY3RvcnlFbnRyeS5oIgotCi0jaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKLSNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhFbnRyeUNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiVjhFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiVjhQcm94
eS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERpcmVj
dG9yeUVudHJ5OjpnZXREaXJlY3RvcnlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQotewotICAgIElOQ19TVEFUUygiRE9NLkRpcmVjdG9yeUVudHJ5LmdldERpcmVjdG9yeSIpOwot
ICAgIERpcmVjdG9yeUVudHJ5KiBpbXAgPSBWOERpcmVjdG9yeUVudHJ5Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKLSAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAg
U1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2s+LCBwYXRoLCBhcmdzWzBdKTsKLSAgICBpZiAoYXJncy5MZW5ndGgo
KSA8PSAxKSB7Ci0gICAgICAgIGltcC0+Z2V0RGlyZWN0b3J5KHBhdGgpOwotICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKLSAgICB9Ci0gICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFnczsK
LSAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYmIGFyZ3NbMV0tPklzT2JqZWN0
KCkpIHsKLSAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIG9i
amVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSk7Ci0gICAgICAgIGZs
YWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZSgpOwotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2OENyZWF0ZSA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY3JlYXRlIikpOwotICAg
ICAgICBpZiAoIXY4Q3JlYXRlLklzRW1wdHkoKSAmJiAhaXNVbmRlZmluZWRPck51bGwodjhDcmVh
dGUpKSB7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwgaXNDcmVhdGUsIHY4Q3Jl
YXRlLT5Cb29sZWFuVmFsdWUoKSk7Ci0gICAgICAgICAgICBmbGFncy0+c2V0Q3JlYXRlKGlzQ3Jl
YXRlKTsKLSAgICAgICAgfQotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OEV4Y2x1c2l2
ZSA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZXhjbHVzaXZlIikpOwotICAgICAgICBp
ZiAoIXY4RXhjbHVzaXZlLklzRW1wdHkoKSAmJiAhaXNVbmRlZmluZWRPck51bGwodjhFeGNsdXNp
dmUpKSB7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwgaXNFeGNsdXNpdmUsIHY4
RXhjbHVzaXZlLT5Cb29sZWFuVmFsdWUoKSk7Ci0gICAgICAgICAgICBmbGFncy0+c2V0RXhjbHVz
aXZlKGlzRXhjbHVzaXZlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMiAmJiAhYXJn
c1syXS0+SXNOdWxsKCkgJiYgIWFyZ3NbMl0tPklzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaWYg
KCFhcmdzWzJdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlv
bihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAgICBzdWNjZXNz
Q2FsbGJhY2sgPSBWOEVudHJ5Q2FsbGJhY2s6OmNyZWF0ZShhcmdzWzJdLCBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwotICAgIH0KLSAgICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjazsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDMgJiYgIWFyZ3NbM10tPklzTnVsbCgp
ICYmICFhcmdzWzNdLT5Jc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlmICghYXJnc1szXS0+SXNP
YmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRD
SF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgZXJyb3JDYWxsYmFjayA9IFY4RXJy
b3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
Ci0gICAgfQotICAgIGltcC0+Z2V0RGlyZWN0b3J5KHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOwotICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotfQotCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uRGlyZWN0b3J5RW50
cnkuZ2V0RmlsZSIpOwotICAgIERpcmVjdG9yeUVudHJ5KiBpbXAgPSBWOERpcmVjdG9yeUVudHJ5
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLQotICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwotCi0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBh
cmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCBwYXRoLCBhcmdzWzBdKTsKLSAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8PSAxKSB7Ci0gICAgICAgIGltcC0+Z2V0RmlsZShwYXRoKTsKLSAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgfQotICAgIFJlZlB0cjxXZWJLaXRGbGFn
cz4gZmxhZ3M7Ci0gICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFd
LT5Jc09iamVjdCgpKSB7Ci0gICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+LCBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSkpOwot
ICAgICAgICBmbGFncyA9IFdlYktpdEZsYWdzOjpjcmVhdGUoKTsKLSAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdjhDcmVhdGUgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImNyZWF0
ZSIpKTsKLSAgICAgICAgaWYgKCF2OENyZWF0ZS5Jc0VtcHR5KCkgJiYgIWlzVW5kZWZpbmVkT3JO
dWxsKHY4Q3JlYXRlKSkgewotICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGJvb2wsIGlzQ3Jl
YXRlLCB2OENyZWF0ZS0+Qm9vbGVhblZhbHVlKCkpOwotICAgICAgICAgICAgZmxhZ3MtPnNldENy
ZWF0ZShpc0NyZWF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
djhFeGNsdXNpdmUgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2x1c2l2ZSIpKTsK
LSAgICAgICAgaWYgKCF2OEV4Y2x1c2l2ZS5Jc0VtcHR5KCkgJiYgIWlzVW5kZWZpbmVkT3JOdWxs
KHY4RXhjbHVzaXZlKSkgewotICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGJvb2wsIGlzRXhj
bHVzaXZlLCB2OEV4Y2x1c2l2ZS0+Qm9vbGVhblZhbHVlKCkpOwotICAgICAgICAgICAgZmxhZ3Mt
PnNldEV4Y2x1c2l2ZShpc0V4Y2x1c2l2ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+
IDIgJiYgIWFyZ3NbMl0tPklzTnVsbCgpICYmICFhcmdzWzJdLT5Jc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIGlmICghYXJnc1syXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBzZXRE
T01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrID0gVjhFbnRyeUNhbGxiYWNrOjpjcmVhdGUoYXJnc1syXSwgZ2V0
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICB9Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2s7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzICYmICFhcmdzWzNd
LT5Jc051bGwoKSAmJiAhYXJnc1szXS0+SXNVbmRlZmluZWQoKSkgewotICAgICAgICBpZiAoIWFy
Z3NbM10tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFRZ
UEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIGVycm9yQ2FsbGJh
Y2sgPSBWOEVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNdLCBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwotICAgIH0KLSAgICBpbXAtPmdldEZpbGUocGF0aCwgZmxhZ3MsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci19Ci0K
LQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNU
RU0pCisvLyBGSVhNRTogRGVsZXRlIHRoaXMgZmlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeVN5bmNDdXN0
b20uY3BwCmluZGV4IGJlYzRmZmM5ODIzYzQ4MDA1YWJiYWFhODVkZTk0NDYyNjgwMjk2NDcuLmRj
OTQ4NjM2Zjc4ZTE1MzJkYmI0ZjMzOTM2ZTBhNWUzMjVjMThkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50
cnlTeW5jQ3VzdG9tLmNwcApAQCAtMjgsMTAwICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWOERpcmVjdG9yeUVudHJ5U3luYy5o
IgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiRGlyZWN0b3J5RW50cnlT
eW5jLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5o
IgotI2luY2x1ZGUgIlY4RW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIlY4RXJyb3JDYWxsYmFj
ay5oIgotI2luY2x1ZGUgIlY4RmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIK
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCBleHRyYWN0Qm9vbGVhblZhbHVlKGNv
bnN0IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4mIG9iamVjdCwgY29uc3QgY2hhciogbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsKLSAgICBlYyA9IDA7Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcobmFtZSkpOwotICAgIGlmICghdmFs
dWUuSXNFbXB0eSgpICYmICFpc1VuZGVmaW5lZE9yTnVsbCh2YWx1ZSkpIHsKLSAgICAgICAgdjg6
OlRyeUNhdGNoIGJsb2NrOwotICAgICAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUtPkJvb2xl
YW5WYWx1ZSgpOwotICAgICAgICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpIHsKLSAgICAgICAgICAg
IGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG5hdGl2ZVZhbHVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBnZXRGbGFncyhjb25zdCB2
ODo6TG9jYWw8djg6OlZhbHVlPiYgYXJnLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBlYyA9
IDA7Ci0gICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZykgfHwgIWFyZy0+SXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdDsK
LSAgICB7Ci0gICAgICAgIHY4OjpUcnlDYXRjaCBibG9jazsKLSAgICAgICAgb2JqZWN0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmcpOwotICAgICAgICBpZiAoYmxvY2suSGFzQ2F1
Z2h0KCkpIHsKLSAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgaXNDcmVhdGUgPSBleHRy
YWN0Qm9vbGVhblZhbHVlKG9iamVjdCwgImNyZWF0ZSIsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAg
ICAgIHJldHVybiAwOwotICAgIGJvb2wgaXNFeGNsdXNpdmUgPSBleHRyYWN0Qm9vbGVhblZhbHVl
KG9iamVjdCwgImV4Y2x1c2l2ZSIsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncyA9IFdlYktpdEZsYWdzOjpjcmVhdGUo
KTsKLSAgICBmbGFncy0+c2V0Q3JlYXRlKGlzQ3JlYXRlKTsKLSAgICBmbGFncy0+c2V0RXhjbHVz
aXZlKGlzRXhjbHVzaXZlKTsKLQotICAgIHJldHVybiBmbGFnczsKLX0KLQotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RGlyZWN0b3J5RW50cnlTeW5jOjpnZXREaXJlY3RvcnlDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkRpcmVjdG9yeUVu
dHJ5U3luYy5nZXREaXJlY3RvcnkiKTsKLSAgICBEaXJlY3RvcnlFbnRyeVN5bmMqIGltcCA9IFY4
RGlyZWN0b3J5RW50cnlTeW5jOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPD4sIHBhdGgsIGFyZ3NbMF0pOwotICAgIFJlZlB0cjxXZWJLaXRGbGFncz4g
ZmxhZ3MgPSBnZXRGbGFncyhhcmdzWzFdLCBlYyk7Ci0gICAgaWYgKFVOTElLRUxZKGVjKSkKLSAg
ICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAg
IFJlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IHJlc3VsdCA9IGltcC0+Z2V0RGlyZWN0b3J5KHBh
dGgsIGZsYWdzLCBlYyk7Ci0gICAgaWYgKFVOTElLRUxZKGVjKSkKLSAgICAgICAgcmV0dXJuIHNl
dERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB0b1Y4KHJl
c3VsdC5yZWxlYXNlKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5EaXJlY3RvcnlFbnRyeVN5bmMu
Z2V0RmlsZSIpOwotICAgIERpcmVjdG9yeUVudHJ5U3luYyogaW1wID0gVjhEaXJlY3RvcnlFbnRy
eVN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8
PiwgcGF0aCwgYXJnc1swXSk7Ci0gICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncyA9IGdldEZs
YWdzKGFyZ3NbMV0sIGVjKTsKLSAgICBpZiAoVU5MSUtFTFkoZWMpKQotICAgICAgICByZXR1cm4g
c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgUmVmUHRyPEZpbGVF
bnRyeVN5bmM+IHJlc3VsdCA9IGltcC0+Z2V0RmlsZShwYXRoLCBmbGFncywgZWMpOwotICAgIGlm
IChVTkxJS0VMWShlYykpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkdl
dElzb2xhdGUoKSk7Ci19Ci0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoRklMRV9TWVNURU0pCisvLyBGSVhNRTogRGVsZXRlIHRoaXMgZmlsZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158753</attachid>
            <date>2012-08-16 01:57:22 -0700</date>
            <delta_ts>2012-08-16 11:49:08 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-94207-20120816015648.patch</filename>
            <type>text/plain</type>
            <size>33743</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFkNzc1ZjBhZjU1MzFh
YjdiY2E4YjQ0OGVlMjhkMDhmYWIzYmI1NS4uMTcwNDg4MTFkOGZmNDkwZDk1YzMwOGQ3YjIyOTVk
YTgzYWJmZjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA4LTE2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlyZWN0b3J5RW50cnkgc2hv
dWxkIHVzZSBEaWN0aW9uYXJ5IHJhdGhlciB0aGFuIGN1c3RvbSBiaW5kaW5ncyBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoaXMgY29k
ZSB3YXMgd3JpdHRlbiwgd2UgYWRkZWQgbmF0aXZlIHN1cHBvcnQgZm9yIFdlYklETAorICAgICAg
ICBEaWN0aW9uYXJ5IG9iamVjdHMuIFRoaXMgcGF0Y2ggbW92ZXMgRGlyZWN0b3J5RW50cnkgdG8g
dXNlIHRoaXMKKyAgICAgICAgYXV0b21hdGljIGZhY2lsaXR5IGluc3RlYWQgb2YgY3VzdG9tIGNv
ZGUuCisKKyAgICAgICAgQSBmb2xsb3d1cCBwYXRjaCB3aWxsIGRlbGV0ZSB0aGUgZW1wdHkgZmls
ZXMgZnJvbSB0aGUgYnVpbGQgc3lzdGVtcy4KKworICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
QmFzZTo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0
RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJh
c2UuaDoKKyAgICAgICAgKERPTUZpbGVTeXN0ZW1CYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5
RW50cnk6OmdldEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5RW50cnk6OmdldERp
cmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6
CisgICAgICAgIChEaXJlY3RvcnlFbnRyeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3luYzo6
Z2V0RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVj
dG9yeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5o
OgorICAgICAgICAoRGlyZWN0b3J5RW50cnlTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc29sdmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZsYWdzOjpGaWxlU3lzdGVtRmxhZ3MpOgor
ICAgICAgICAoRmlsZVN5c3RlbUZsYWdzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpcmVj
dG9yeUVudHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVu
dHJ5U3luY0N1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0
b3J5RW50cnlDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVj
dG9yeUVudHJ5U3luY0N1c3RvbS5jcHA6CisKIDIwMTItMDgtMTUgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVmYWN0b3Jpbmc6IEludHJv
ZHVjZSBhIG5ldyBmdW5jdGlvbiBmb3Igc29tZSBwYXJ0IG9mIFBvcHVwQ29udGFpbmVyOjpsYXlv
dXRBbmRDYWxjdWxhdGVXaWRnZXRSZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCmluZGV4IGQ5MzhiODAyNTYw
ODVkNDBjY2VhNDY0NGIwNTY5YmEyOTk4MjVmMzcuLmE2ZWU2NDI1NTkyNzI4MGVkZmViMGJlYWM5
ZmI2NThiMDM2N2YxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcApAQCAtMjIyLDI5ICsyMjIsMjkgQEAgYm9v
bCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBET01GaWxl
U3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2Uq
IGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZpbGVTeXN0ZW1GbGFncyYgZmxhZ3Ms
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIGFic29sdXRlUGF0aDsK
ICAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aChtX3R5cGUsIGVudHJ5LCBwYXRoLCBhYnNvbHV0
ZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBPd25QdHI8RW50cnlDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsKLSAgICBpZiAoZmxhZ3Mg
JiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVG
aWxlKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwgZmxhZ3MtPmlzRXhjbHVzaXZl
KCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIGlmIChmbGFncy5jcmVhdGUpCisgICAgICAg
IG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1
dGVQYXRoKSwgZmxhZ3MuZXhjbHVzaXZlLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKICAgICBlbHNl
CiAgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoYWJzb2x1dGVQYXRoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldERpcmVjdG9yeShjb25zdCBFbnRyeUJh
c2UqIGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6
Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgRmlsZVN5c3RlbUZsYWdzJiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykK
IHsKICAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOwogICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRo
KG1fdHlwZSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFj
a3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRl
UGF0aCwgdHJ1ZSk7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGNyZWF0ZUZpbGVTeXN0ZW1VUkwo
YWJzb2x1dGVQYXRoKSwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkp
OworICAgIGlmIChmbGFncy5jcmVhdGUpCisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVh
dGVEaXJlY3RvcnkoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBmbGFncy5leGNs
dXNpdmUsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhjcmVhdGVGaWxlU3lzdGVtVVJMKGFic29sdXRlUGF0
aCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAppbmRl
eCBhMzdjYWIwNGI4ZTVkYTQ3YTIyNjY0MDQ0Mjk0YTExMTBlY2JmYTFjLi5hOWY4NGRmOWU2ZDM4
MDVhZTI5Y2I1ZWRhZWY5NjIyYzQ2YzA3YTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaApAQCAtOTgsOCArOTgsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdmUoY29uc3QgRW50cnlCYXNlKiwgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICBib29sIHJlbW92
ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVudHJ5QmFzZSosIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgYm9vbCBnZXRQYXJlbnQoY29uc3QgRW50
cnlCYXNlKiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPik7Ci0gICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSosIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwotICAgIGJvb2wgZ2V0RGlyZWN0b3J5KGNvbnN0
IEVudHJ5QmFzZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4s
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwor
ICAgIGJvb2wgZ2V0RmlsZShjb25zdCBFbnRyeUJhc2UqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IEZpbGVTeXN0ZW1GbGFncyYsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4pOworICAgIGJvb2wgZ2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFz
ZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiwgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgYm9vbCBy
ZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4sIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+KTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAKaW5kZXggMGY2ZTQ5ZjQ0MjNhMDQ4ZTU1YjNk
YWFiMjgwODBhZTM5MzNlNjFkYS4uY2Q5MGUxZjQ1NDQ4OGEwMWRlNzIzZjVhMTQ1ZjVlZjFjMWM0
ZTFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnkuY3BwCkBAIC01MSwxNSArNTEsMTcgQEAgUGFzc1JlZlB0cjxEaXJlY3RvcnlS
ZWFkZXI+IERpcmVjdG9yeUVudHJ5OjpjcmVhdGVSZWFkZXIoKQogICAgIHJldHVybiBEaXJlY3Rv
cnlSZWFkZXI6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0sIG1fZnVsbFBhdGgpOwogfQogCi12b2lkIERp
cmVjdG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJL
aXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCit2b2lkIERpcmVj
dG9yeUVudHJ5OjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKIHsKKyAgICBGaWxlU3lzdGVt
RmxhZ3MgZmxhZ3Mob3B0aW9ucyk7CiAgICAgUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2soZXJyb3JDYWxsYmFja1JlZik7CiAgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldEZpbGUo
dGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpCiAgICAg
ICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJlbGVhc2Uo
KSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlIp
KTsKIH0KIAotdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2tSZWYpCit2b2lkIERpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrUmVmKQogeworICAgIEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRpb25zKTsKICAgICBSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsKICAgICBp
ZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKQogICAgICAgICBmaWxlc3lzdGVtKCktPnNjaGVkdWxl
Q2FsbGJhY2soZXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIEZpbGVFcnJvcjo6Y3JlYXRlKEZpbGVF
cnJvcjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5oCmluZGV4IGIyNzQxMWE4NjFiZGMw
YmEzZjI4MDg5NTYzNzc5ZTU1Y2Q5YzlhOTQuLmVjODk0NmU1OWJmZjVkZjI0NThkZjhiYWQ5Mjdi
NTQyMGIwNTk5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9EaXJlY3RvcnlFbnRyeS5oCkBAIC01Niw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQYXNzUmVm
UHRyPERpcmVjdG9yeVJlYWRlcj4gY3JlYXRlUmVhZGVyKCk7Ci0gICAgdm9pZCBnZXRGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gPSAwLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOwotICAg
IHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRG
bGFncz4gPSAwLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+ID0gMCwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPiA9IDApOworICAgIHZvaWQgZ2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IERpY3Rpb25hcnkmID0gRGljdGlvbmFyeSgpLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+
ID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApOworICAgIHZvaWQgZ2V0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgPSBEaWN0aW9uYXJ5KCks
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
ID0gMCk7CiAgICAgdm9pZCByZW1vdmVSZWN1cnNpdmVseShQYXNzUmVmUHRyPFZvaWRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiA9IDApIGNv
bnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwKaW5kZXggYzZjOWFlOWJiMThjNGM3YzZhMzZlZDhiYTM3
YmM1ZDMwNDI3NjIwOC4uYjQ3MzdiNDFkMGNmMGI3MzNmYzQ2ODRiOTUwMTVjNDE2NDE4ODM2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5
RW50cnkuaWRsCkBAIC0zNiw4ICszNiw4IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgSlNO
b1N0YXRpY1RhYmxlcwogICAgIF0gRGlyZWN0b3J5RW50cnkgOiBFbnRyeSB7CiAgICAgICAgIERp
cmVjdG9yeVJlYWRlciBjcmVhdGVSZWFkZXIoKTsKLSAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRG
aWxlKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJp
bmddIERPTVN0cmluZyBwYXRoLCBpbiBbT3B0aW9uYWxdIFdlYktpdEZsYWdzIGZsYWdzLCBpbiBb
T3B0aW9uYWwsIENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09w
dGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKLSAgICAgICAg
W0N1c3RvbV0gdm9pZCBnZXREaXJlY3RvcnkoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRy
ZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFtPcHRpb25hbF0g
V2ViS2l0RmxhZ3MgZmxhZ3MsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2spOworICAgICAgICB2b2lkIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFzPU51bGxT
dHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFtP
cHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFbnRy
eUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAgICAgdm9pZCBnZXREaXJlY3RvcnkoaW4gW1Ry
ZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3Ry
aW5nIHBhdGgsIGluIFtPcHRpb25hbF0gRGljdGlvbmFyeSBvcHRpb25zLCBpbiBbT3B0aW9uYWws
IENhbGxiYWNrXSBFbnRyeUNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBD
YWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKTsKICAgICAgICAgdm9pZCByZW1v
dmVSZWN1cnNpdmVseShpbiBbQ2FsbGJhY2tdIFZvaWRDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ss
IGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CiAg
ICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlFbnRyeVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5U3luYy5jcHAKaW5kZXggMTBkZWFjZWIwOTY5YjdiYTAxMTZkMmNmZjAz
Nzc5ODRiNDhkZjFhMC4uMDk2MGVlZDM2YjZmMzc0MjA5ZDA1YmE0YmMxZGFmNGZkZGYwMWIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVu
dHJ5U3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5U3luYy5jcHAKQEAgLTUxLDkgKzUxLDEwIEBAIFBhc3NSZWZQdHI8RGlyZWN0b3J5
UmVhZGVyU3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpjcmVhdGVSZWFkZXIoRXhjZXB0aW9uQ29k
ZSYpCiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlclN5bmM6OmNyZWF0ZShtX2ZpbGVTeXN0ZW0s
IG1fZnVsbFBhdGgpOwogfQogCi1QYXNzUmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVu
dHJ5U3luYzo6Z2V0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0Rmxh
Z3M+IGZsYWdzLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4g
RGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOworICAg
IEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRpb25zKTsKICAgICBFbnRyeVN5bmNDYWxsYmFja0hl
bHBlciBoZWxwZXIobV9maWxlU3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CiAgICAgaWYgKCFt
X2ZpbGVTeXN0ZW0tPmdldEZpbGUodGhpcywgcGF0aCwgZmxhZ3MsIGhlbHBlci5zdWNjZXNzQ2Fs
bGJhY2soKSwgaGVscGVyLmVycm9yQ2FsbGJhY2soKSkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhj
ZXB0aW9uOjpJTlZBTElEX01PRElGSUNBVElPTl9FUlI7CkBAIC02Miw5ICs2MywxMCBAQCBQYXNz
UmVmUHRyPEZpbGVFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZQogICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PEZpbGVF
bnRyeVN5bmM+KGhlbHBlci5nZXRSZXN1bHQoZWMpKTsKIH0KIAotUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeVN5bmM+IERpcmVjdG9yeUVudHJ5U3luYzo6Z2V0
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOworICAgIEZpbGVTeXN0ZW1GbGFncyBm
bGFncyhvcHRpb25zKTsKICAgICBFbnRyeVN5bmNDYWxsYmFja0hlbHBlciBoZWxwZXIobV9maWxl
U3lzdGVtLT5hc3luY0ZpbGVTeXN0ZW0oKSk7CiAgICAgaWYgKCFtX2ZpbGVTeXN0ZW0tPmdldERp
cmVjdG9yeSh0aGlzLCBwYXRoLCBmbGFncywgaGVscGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxw
ZXIuZXJyb3JDYWxsYmFjaygpKSkgewogICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFM
SURfTU9ESUZJQ0FUSU9OX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAppbmRleCBiOWY3YTg1Y2NjYWExMGNhMmZl
ZjVlZWRhNDgwYzdhYWVmNjljZjQwLi45N2E4ZGNiNzUzYmU5MDRhZjllOTM2ZTg3Y2I0ZGEzYmE2
ZmEzOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGly
ZWN0b3J5RW50cnlTeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5U3luYy5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQYXNz
UmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IGNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJik7
Ci0gICAgUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPERpcmVjdG9yeUVudHJ5U3luYz4gZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRy
PEZpbGVFbnRyeVN5bmM+IGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5j
PiBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbAppbmRleCA2NmMyODhmYmJjNWEyY2VhMmM4M2E1
YTUxMzM2N2Q2MzY5ZDg3NDA1Li4xM2MzYWFiNWYxMGQ5NTZkYWQ2YWVlOTI2MTY0ZTk1YjkzY2Y0
ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5RW50cnlTeW5jLmlkbApAQCAtMzYsOCArMzYsOCBAQCBtb2R1bGUgc3RvcmFnZSB7
CiAgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKICAgICBdIERpcmVjdG9yeUVudHJ5U3luYyA6IEVu
dHJ5U3luYyB7CiAgICAgICAgIERpcmVjdG9yeVJlYWRlclN5bmMgY3JlYXRlUmVhZGVyKCkgcmFp
c2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gRmlsZUVudHJ5U3luYyBnZXRG
aWxlKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJp
bmddIERPTVN0cmluZyBwYXRoLCBpbiBXZWJLaXRGbGFncyBmbGFncykgcmFpc2VzIChGaWxlRXhj
ZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gRGlyZWN0b3J5RW50cnlTeW5jIGdldERpcmVjdG9y
eShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgcGF0aCwgaW4gV2ViS2l0RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2Vw
dGlvbik7CisgICAgICAgIEZpbGVFbnRyeVN5bmMgZ2V0RmlsZShpbiBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4g
RGljdGlvbmFyeSBmbGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgRGlyZWN0
b3J5RW50cnlTeW5jIGdldERpcmVjdG9yeShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJl
YXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gRGljdGlvbmFyeSBm
bGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCByZW1vdmVSZWN1cnNp
dmVseSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cAppbmRleCBhYjA4MzRiMTJkODAyODM1MTkyNzJjMDg5NDA1YjQ3N2ViZjJlNDMxLi45ZDgxYTIy
NDZjMzI1YmZiYjk5ZWNmMzNjZTgyMGM5NGU2OTc2YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCkBA
IC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGVycm9yKTsK
ICAgICAgICAgaWYgKGVycm9yLT5jb2RlKCkgPT0gRmlsZUVycm9yOjpUWVBFX01JU01BVENIX0VS
UikKLSAgICAgICAgICAgIG1fcm9vdC0+Z2V0RmlsZShtX2ZpbGVQYXRoLCAwLCBtX3N1Y2Nlc3ND
YWxsYmFjaywgbV9lcnJvckNhbGxiYWNrKTsKKyAgICAgICAgICAgIG1fcm9vdC0+Z2V0RmlsZSht
X2ZpbGVQYXRoLCBEaWN0aW9uYXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJh
Y2spOwogICAgICAgICBlbHNlIGlmIChtX2Vycm9yQ2FsbGJhY2spCiAgICAgICAgICAgICBtX2Vy
cm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5
c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3QKIHsKICAgICBBU1NFUlQo
YXN5bmNGaWxlU3lzdGVtKTsKICAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBET01G
aWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBt
X3R5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSktPnJvb3QoKTsKLSAgICByb290LT5nZXRE
aXJlY3RvcnkobV9maWxlUGF0aCwgMCwgbV9zdWNjZXNzQ2FsbGJhY2ssIEVycm9yQ2FsbGJhY2tX
cmFwcGVyOjpjcmVhdGUobV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxsYmFjaywgcm9vdCwg
bV9maWxlUGF0aCkpOworICAgIHJvb3QtPmdldERpcmVjdG9yeShtX2ZpbGVQYXRoLCBEaWN0aW9u
YXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrV3JhcHBlcjo6Y3JlYXRlKG1f
c3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJhY2ssIHJvb3QsIG1fZmlsZVBhdGgpKTsKIH0K
IAogLy8gTWV0YWRhdGFDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaAppbmRleCBhNzViNDcyMzAxNGQyMjE2ODU0NjI4YTZjODY4
MjhlODY4MjZjMDg2Li44ZTg1NTA2OGQ1NzhjOGI1ZGFlMGQ4ZTE3MGE4NWMwMTFlYjY1MmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaApA
QCAtMjgsNDAgKzI4LDMxIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViS2l0
RmxhZ3NfaAotI2RlZmluZSBXZWJLaXRGbGFnc19oCisjaWZuZGVmIEZpbGVTeXN0ZW1GbGFnc19o
CisjZGVmaW5lIEZpbGVTeXN0ZW1GbGFnc19oCiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAK
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFdlYktpdEZsYWdzIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0RmxhZ3M+IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gY3JlYXRlKGJvb2wgY3JlYXRlID0g
ZmFsc2UsIGJvb2wgZXhjbHVzaXZlID0gZmFsc2UpCisvLyBGSVhNRTogUmVuYW1lIHRoaXMgZmls
ZSB0byBGaWxlU3lzdGVtRmxhZ3MKK3N0cnVjdCBGaWxlU3lzdGVtRmxhZ3MgIHsKKyAgICBleHBs
aWNpdCBGaWxlU3lzdGVtRmxhZ3MoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKKyAgICAgICAg
OiBjcmVhdGUoZmFsc2UpCisgICAgICAgICwgZXhjbHVzaXZlKGZhbHNlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRGbGFncyhjcmVhdGUsIGV4Y2x1c2l2ZSkpOwor
ICAgICAgICBvcHRpb25zLmdldCgiY3JlYXRlIiwgY3JlYXRlKTsKKyAgICAgICAgb3B0aW9ucy5n
ZXQoImV4Y2x1c2l2ZSIsIGV4Y2x1c2l2ZSk7CiAgICAgfQogCi0gICAgYm9vbCBpc0NyZWF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlOyB9Ci0gICAgdm9pZCBzZXRDcmVhdGUoYm9vbCBjcmVh
dGUpIHsgbV9jcmVhdGUgPSBjcmVhdGU7IH0KLSAgICBib29sIGlzRXhjbHVzaXZlKCkgY29uc3Qg
eyByZXR1cm4gbV9leGNsdXNpdmU7IH0KLSAgICB2b2lkIHNldEV4Y2x1c2l2ZShib29sIGV4Y2x1
c2l2ZSkgeyBtX2V4Y2x1c2l2ZSA9IGV4Y2x1c2l2ZTsgfQotCi1wcml2YXRlOgotICAgIFdlYktp
dEZsYWdzKGJvb2wgY3JlYXRlLCBib29sIGV4Y2x1c2l2ZSkKLSAgICAgICAgOiBtX2NyZWF0ZShj
cmVhdGUpCi0gICAgICAgICwgbV9leGNsdXNpdmUoZXhjbHVzaXZlKQotICAgIHsKLSAgICB9Ci0g
ICAgYm9vbCBtX2NyZWF0ZTsKLSAgICBib29sIG1fZXhjbHVzaXZlOworICAgIGJvb2wgY3JlYXRl
OworICAgIGJvb2wgZXhjbHVzaXZlOwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK30KIAogI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKIAotI2VuZGlmIC8vIFdlYktpdEZsYWdzX2gKKyNlbmRp
ZiAvLyBGaWxlU3lzdGVtRmxhZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcAppbmRleCA1MTAwYTY4NDVmZDA5ODI4MDUw
NDFmYjFlMGFhYTI2MDlhNWZhOTFiLi5mMTJkNzMxZDdjNDA0NTEwMWZjNDA5ODAwZjc0Y2U0MjQx
NTFlMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVjdG9y
eUVudHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVj
dG9yeUVudHJ5Q3VzdG9tLmNwcApAQCAtMjgsMTE5ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQot
I2luY2x1ZGUgIkpTRGlyZWN0b3J5RW50cnkuaCIKLQotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0VudHJ5Q2FsbGJhY2su
aCIKLSNpbmNsdWRlICJKU0Vycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1ZhbHVlIEpTRGlyZWN0b3J5RW50cnk6OmdldEZp
bGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAx
KQotICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7Ci0KLSAgICBEaXJlY3RvcnlFbnRyeSogaW1wID0gc3RhdGljX2Nhc3Q8
RGlyZWN0b3J5RW50cnkqPihpbXBsKCkpOwotICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IHZhbHVl
VG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0KLSAgICBpbnQgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwotICAg
IGlmIChhcmdzQ291bnQgPD0gMSkgewotICAgICAgICBpbXAtPmdldEZpbGUocGF0aCk7Ci0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJLaXRGbGFn
cz4gZmxhZ3M7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc051bGwoKSAmJiAhZXhlYy0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSAmJiBleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgxKS5nZXRPYmpl
Y3QoKTsKLSAgICAgICAgZmxhZ3MgPSBXZWJLaXRGbGFnczo6Y3JlYXRlKCk7Ci0gICAgICAgIEpT
VmFsdWUganNDcmVhdGUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjcmVh
dGUiKSk7Ci0gICAgICAgIGZsYWdzLT5zZXRDcmVhdGUoanNDcmVhdGUudG9Cb29sZWFuKCkpOwot
ICAgICAgICBKU1ZhbHVlIGpzRXhjbHVzaXZlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAiZXhjbHVzaXZlIikpOwotICAgICAgICBmbGFncy0+c2V0RXhjbHVzaXZlKGpzRXhj
bHVzaXZlLnRvQm9vbGVhbigpKTsKLSAgICB9Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyICYm
ICFleGVjLT5hcmd1bWVudCgyKS5pc051bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMikuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDIpLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0g
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBzdWNj
ZXNzQ2FsbGJhY2sgPSBKU0VudHJ5Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1
bWVudCgyKSksIGdsb2JhbE9iamVjdCgpKTsKLSAgICB9Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2s7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDMgJiYg
IWV4ZWMtPmFyZ3VtZW50KDMpLmlzTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgzKS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIGlmICghZXhlYy0+YXJndW1lbnQoMykuaXNPYmplY3QoKSkgewot
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICB9Ci0gICAgICAgIGVycm9y
Q2FsbGJhY2sgPSBKU0Vycm9yQ2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1bWVu
dCgzKSksIGdsb2JhbE9iamVjdCgpKTsKLSAgICB9Ci0KLSAgICBpbXAtPmdldEZpbGUocGF0aCwg
ZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUgSlNEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5KEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwotCi0gICAgRGlyZWN0b3J5RW50cnkqIGltcCA9IHN0YXRpY19jYXN0PERpcmVj
dG9yeUVudHJ5Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBTdHJpbmcmIHBhdGggPSB2YWx1ZVRvU3Ry
aW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotCi0gICAgaW50IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKLSAgICBpZiAo
YXJnc0NvdW50IDw9IDEpIHsKLSAgICAgICAgaW1wLT5nZXREaXJlY3RvcnkocGF0aCk7Ci0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJLaXRGbGFn
cz4gZmxhZ3M7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc051bGwoKSAmJiAhZXhlYy0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSAmJiBleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgxKS5nZXRPYmpl
Y3QoKTsKLSAgICAgICAgZmxhZ3MgPSBXZWJLaXRGbGFnczo6Y3JlYXRlKCk7Ci0gICAgICAgIEpT
VmFsdWUganNDcmVhdGUgPSBvYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJjcmVh
dGUiKSk7Ci0gICAgICAgIGZsYWdzLT5zZXRDcmVhdGUoanNDcmVhdGUudG9Cb29sZWFuKCkpOwot
ICAgICAgICBKU1ZhbHVlIGpzRXhjbHVzaXZlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAiZXhjbHVzaXZlIikpOwotICAgICAgICBmbGFncy0+c2V0RXhjbHVzaXZlKGpzRXhj
bHVzaXZlLnRvQm9vbGVhbigpKTsKLSAgICB9Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBSZWZQdHI8RW50cnlDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrOwotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAyICYm
ICFleGVjLT5hcmd1bWVudCgyKS5pc051bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMikuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDIpLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0g
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBzdWNj
ZXNzQ2FsbGJhY2sgPSBKU0VudHJ5Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1
bWVudCgyKSksIGdsb2JhbE9iamVjdCgpKTsKLSAgICB9Ci0gICAgUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2s7Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDMgJiYg
IWV4ZWMtPmFyZ3VtZW50KDMpLmlzTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgzKS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIGlmICghZXhlYy0+YXJndW1lbnQoMykuaXNPYmplY3QoKSkgewot
ICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICB9Ci0gICAgICAgIGVycm9y
Q2FsbGJhY2sgPSBKU0Vycm9yQ2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1bWVu
dCgzKSksIGdsb2JhbE9iamVjdCgpKTsKLSAgICB9Ci0KLSAgICBpbXAtPmdldERpcmVjdG9yeShw
YXRoLCBmbGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQorLy8gRklYTUU6IFJlbW92ZSB0aGlzIGZpbGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5U3luY0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5U3luY0N1
c3RvbS5jcHAKaW5kZXggOGQ1MmFmOWE2YTBkY2EyNmNjNWVlMDZhMmViYTg5ODIzZGExNmZiOC4u
ZGM5NDg2MzZmNzhlMTUzMmRiYjRmMzM5MzZlMGE1ZTMyNWMxOGQyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9t
LmNwcApAQCAtMjgsNzEgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiSlNEaXJl
Y3RvcnlFbnRyeVN5bmMuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUg
IkpTRW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTRXJyb3JDYWxsYmFjay5oIgotI2luY2x1
ZGUgIkpTRmlsZUVudHJ5U3luYy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFBhc3NS
ZWZQdHI8V2ViS2l0RmxhZ3M+IGdldEZsYWdzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNWYWx1
ZSYgYXJndW1lbnQpCi17Ci0gICAgaWYgKGFyZ3VtZW50LmlzTnVsbCgpIHx8IGFyZ3VtZW50Lmlz
VW5kZWZpbmVkKCkgfHwgIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFnczsKLSAgICBKU09iamVjdCogb2JqZWN0ID0g
YXJndW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgZmxhZ3MgPSBXZWJLaXRGbGFnczo6Y3JlYXRlKCk7
Ci0gICAgSlNWYWx1ZSBqc0NyZWF0ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImNyZWF0ZSIpKTsKLSAgICBmbGFncy0+c2V0Q3JlYXRlKGpzQ3JlYXRlLnRvQm9vbGVhbigp
KTsKLSAgICBKU1ZhbHVlIGpzRXhjbHVzaXZlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmll
cihleGVjLCAiZXhjbHVzaXZlIikpOwotICAgIGZsYWdzLT5zZXRFeGNsdXNpdmUoanNFeGNsdXNp
dmUudG9Cb29sZWFuKCkpOwotICAgIHJldHVybiBmbGFnczsKLX0KLQotSlNWYWx1ZSBKU0RpcmVj
dG9yeUVudHJ5U3luYzo6Z2V0RmlsZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgRGlyZWN0b3J5
RW50cnlTeW5jKiBpbXAgPSBzdGF0aWNfY2FzdDxEaXJlY3RvcnlFbnRyeVN5bmMqPihpbXBsKCkp
OwotICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBSZWZQdHI8V2Vi
S2l0RmxhZ3M+IGZsYWdzID0gZ2V0RmxhZ3MoZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOwotICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhleGVjLCB0aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5nZXRGaWxl
KHBhdGgsIGZsYWdzLCBlYykpKTsKLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLUpTVmFsdWUgSlNEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERp
cmVjdG9yeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jKiBpbXAg
PSBzdGF0aWNfY2FzdDxEaXJlY3RvcnlFbnRyeVN5bmMqPihpbXBsKCkpOwotICAgIGNvbnN0IFN0
cmluZyYgcGF0aCA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdz
ID0gZ2V0RmxhZ3MoZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCB0aGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5nZXREaXJlY3RvcnkocGF0aCwgZmxh
Z3MsIGVjKSkpOwotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJ
TEVfU1lTVEVNKQorLy8gRklYTUU6IERlbGV0ZSB0aGlzIGZpbGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3Rv
bS5jcHAKaW5kZXggMjYwMWRjNmI1YmMwNjU3NTZjZmQxMWRlZjI5YzQwNmM4YTg1YjI0YS4uZGM5
NDg2MzZmNzhlMTUzMmRiYjRmMzM5MzZlMGE1ZTMyNWMxOGQyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5Q3Vz
dG9tLmNwcApAQCAtMjgsMTEyICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWOERpcmVjdG9yeUVudHJ5LmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgotI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOEVu
dHJ5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJWOEVycm9yQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJW
OFByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uRGlyZWN0b3J5RW50cnkuZ2V0RGlyZWN0b3J5
Iik7Ci0gICAgRGlyZWN0b3J5RW50cnkqIGltcCA9IFY4RGlyZWN0b3J5RW50cnk6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQotICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7Ci0K
LSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPFdp
dGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHBhdGgsIGFyZ3NbMF0pOwotICAgIGlmIChhcmdzLkxl
bmd0aCgpIDw9IDEpIHsKLSAgICAgICAgaW1wLT5nZXREaXJlY3RvcnkocGF0aCk7Ci0gICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIH0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzOwotICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkgJiYgYXJnc1sxXS0+SXNP
YmplY3QoKSkgewotICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Piwgb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKTsKLSAgICAg
ICAgZmxhZ3MgPSBXZWJLaXRGbGFnczo6Y3JlYXRlKCk7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHY4Q3JlYXRlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJjcmVhdGUiKSk7
Ci0gICAgICAgIGlmICghdjhDcmVhdGUuSXNFbXB0eSgpICYmICFpc1VuZGVmaW5lZE9yTnVsbCh2
OENyZWF0ZSkpIHsKLSAgICAgICAgICAgIEVYQ0VQVElPTl9CTE9DSyhib29sLCBpc0NyZWF0ZSwg
djhDcmVhdGUtPkJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgICAgICAgIGZsYWdzLT5zZXRDcmVhdGUo
aXNDcmVhdGUpOwotICAgICAgICB9Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4RXhj
bHVzaXZlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3KCJleGNsdXNpdmUiKSk7Ci0gICAg
ICAgIGlmICghdjhFeGNsdXNpdmUuSXNFbXB0eSgpICYmICFpc1VuZGVmaW5lZE9yTnVsbCh2OEV4
Y2x1c2l2ZSkpIHsKLSAgICAgICAgICAgIEVYQ0VQVElPTl9CTE9DSyhib29sLCBpc0V4Y2x1c2l2
ZSwgdjhFeGNsdXNpdmUtPkJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgICAgICAgIGZsYWdzLT5zZXRF
eGNsdXNpdmUoaXNFeGNsdXNpdmUpOwotICAgICAgICB9Ci0gICAgfQotICAgIFJlZlB0cjxFbnRy
eUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyICYm
ICFhcmdzWzJdLT5Jc051bGwoKSAmJiAhYXJnc1syXS0+SXNVbmRlZmluZWQoKSkgewotICAgICAg
ICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIHN1
Y2Nlc3NDYWxsYmFjayA9IFY4RW50cnlDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbMl0sIGdldFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgfQotICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMyAmJiAhYXJnc1szXS0+SXNO
dWxsKCkgJiYgIWFyZ3NbM10tPklzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaWYgKCFhcmdzWzNd
LT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihUWVBFX01J
U01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgICAgICBlcnJvckNhbGxiYWNrID0g
VjhFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1szXSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKLSAgICB9Ci0gICAgaW1wLT5nZXREaXJlY3RvcnkocGF0aCwgZmxhZ3MsIHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci19Ci0K
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5EaXJlY3Rv
cnlFbnRyeS5nZXRGaWxlIik7Ci0gICAgRGlyZWN0b3J5RW50cnkqIGltcCA9IFY4RGlyZWN0b3J5
RW50cnk6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQotICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7Ci0KLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KFY4UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHBhdGgsIGFyZ3NbMF0pOwot
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKLSAgICAgICAgaW1wLT5nZXRGaWxlKHBhdGgp
OwotICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICB9Ci0gICAgUmVmUHRyPFdlYktp
dEZsYWdzPiBmbGFnczsKLSAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMV0pICYmIGFy
Z3NbMV0tPklzT2JqZWN0KCkpIHsKLSAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4sIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFd
KSk7Ci0gICAgICAgIGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZSgpOwotICAgICAgICB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2OENyZWF0ZSA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygi
Y3JlYXRlIikpOwotICAgICAgICBpZiAoIXY4Q3JlYXRlLklzRW1wdHkoKSAmJiAhaXNVbmRlZmlu
ZWRPck51bGwodjhDcmVhdGUpKSB7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwg
aXNDcmVhdGUsIHY4Q3JlYXRlLT5Cb29sZWFuVmFsdWUoKSk7Ci0gICAgICAgICAgICBmbGFncy0+
c2V0Q3JlYXRlKGlzQ3JlYXRlKTsKLSAgICAgICAgfQotICAgICAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2OEV4Y2x1c2l2ZSA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZXhjbHVzaXZl
IikpOwotICAgICAgICBpZiAoIXY4RXhjbHVzaXZlLklzRW1wdHkoKSAmJiAhaXNVbmRlZmluZWRP
ck51bGwodjhFeGNsdXNpdmUpKSB7Ci0gICAgICAgICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwg
aXNFeGNsdXNpdmUsIHY4RXhjbHVzaXZlLT5Cb29sZWFuVmFsdWUoKSk7Ci0gICAgICAgICAgICBm
bGFncy0+c2V0RXhjbHVzaXZlKGlzRXhjbHVzaXZlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrOwotICAgIGlmIChhcmdzLkxlbmd0
aCgpID4gMiAmJiAhYXJnc1syXS0+SXNOdWxsKCkgJiYgIWFyZ3NbMl0tPklzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgaWYgKCFhcmdzWzJdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJu
IHNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwot
ICAgICAgICBzdWNjZXNzQ2FsbGJhY2sgPSBWOEVudHJ5Q2FsbGJhY2s6OmNyZWF0ZShhcmdzWzJd
LCBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIH0KLSAgICBSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjazsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDMgJiYgIWFy
Z3NbM10tPklzTnVsbCgpICYmICFhcmdzWzNdLT5Jc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlm
ICghYXJnc1szXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRp
b24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgZXJyb3JD
YWxsYmFjayA9IFY4RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgfQotICAgIGltcC0+Z2V0RmlsZShwYXRoLCBmbGFncywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
LX0KLQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxF
X1NZU1RFTSkKKy8vIEZJWE1FOiBEZWxldGUgdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5U3lu
Y0N1c3RvbS5jcHAKaW5kZXggYmVjNGZmYzk4MjNjNDgwMDVhYmJhYWE4NWRlOTQ0NjI2ODAyOTY0
Ny4uZGM5NDg2MzZmNzhlMTUzMmRiYjRmMzM5MzZlMGE1ZTMyNWMxOGQyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEaXJlY3Rv
cnlFbnRyeVN5bmNDdXN0b20uY3BwCkBAIC0yOCwxMDAgKzI4LDQgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4RGlyZWN0b3J5RW50cnlT
eW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlF
bnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCi0jaW5jbHVkZSAiVjhFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiVjhFcnJvckNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiVjhGaWxlRW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiVjhQcm94
eS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBib29sIGV4dHJhY3RCb29sZWFuVmFs
dWUoY29uc3Qgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiYgb2JqZWN0LCBjb25zdCBjaGFyKiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykgewotICAgIGVjID0gMDsKLSAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSA9IG9iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldyhuYW1lKSk7Ci0gICAgaWYg
KCF2YWx1ZS5Jc0VtcHR5KCkgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSkgewotICAgICAg
ICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7Ci0gICAgICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS0+
Qm9vbGVhblZhbHVlKCk7Ci0gICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkgewotICAgICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmF0aXZlVmFsdWU7Ci0gICAgfQotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGdldEZsYWdzKGNv
bnN0IHY4OjpMb2NhbDx2ODo6VmFsdWU+JiBhcmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAg
IGVjID0gMDsKLSAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJnKSB8fCAhYXJnLT5Jc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ZWN0OwotICAgIHsKLSAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOwotICAgICAgICBvYmplY3Qg
PSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7Ci0gICAgICAgIGlmIChibG9jay5I
YXNDYXVnaHQoKSkgewotICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBpc0NyZWF0ZSA9
IGV4dHJhY3RCb29sZWFuVmFsdWUob2JqZWN0LCAiY3JlYXRlIiwgZWMpOwotICAgIGlmIChlYykK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYm9vbCBpc0V4Y2x1c2l2ZSA9IGV4dHJhY3RCb29sZWFu
VmFsdWUob2JqZWN0LCAiZXhjbHVzaXZlIiwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNy
ZWF0ZSgpOwotICAgIGZsYWdzLT5zZXRDcmVhdGUoaXNDcmVhdGUpOwotICAgIGZsYWdzLT5zZXRF
eGNsdXNpdmUoaXNFeGNsdXNpdmUpOwotCi0gICAgcmV0dXJuIGZsYWdzOwotfQotCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVjdG9yeUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCi17Ci0gICAgSU5DX1NUQVRTKCJET00uRGlyZWN0
b3J5RW50cnlTeW5jLmdldERpcmVjdG9yeSIpOwotICAgIERpcmVjdG9yeUVudHJ5U3luYyogaW1w
ID0gVjhEaXJlY3RvcnlFbnRyeVN5bmM6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0soVjhQYXJhbWV0ZXI8PiwgcGF0aCwgYXJnc1swXSk7Ci0gICAgUmVmUHRyPFdlYktpdEZs
YWdzPiBmbGFncyA9IGdldEZsYWdzKGFyZ3NbMV0sIGVjKTsKLSAgICBpZiAoVU5MSUtFTFkoZWMp
KQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7
Ci0gICAgUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gcmVzdWx0ID0gaW1wLT5nZXREaXJlY3Rv
cnkocGF0aCwgZmxhZ3MsIGVjKTsKLSAgICBpZiAoVU5MSUtFTFkoZWMpKQotICAgICAgICByZXR1
cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIHRv
VjgocmVzdWx0LnJlbGVhc2UoKSwgYXJncy5HZXRJc29sYXRlKCkpOwotfQotCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGVDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkRpcmVjdG9yeUVudHJ5
U3luYy5nZXRGaWxlIik7Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jKiBpbXAgPSBWOERpcmVjdG9y
eUVudHJ5U3luYzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFt
ZXRlcjw+LCBwYXRoLCBhcmdzWzBdKTsKLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzID0g
Z2V0RmxhZ3MoYXJnc1sxXSwgZWMpOwotICAgIGlmIChVTkxJS0VMWShlYykpCi0gICAgICAgIHJl
dHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBSZWZQdHI8
RmlsZUVudHJ5U3luYz4gcmVzdWx0ID0gaW1wLT5nZXRGaWxlKHBhdGgsIGZsYWdzLCBlYyk7Ci0g
ICAgaWYgKFVOTElLRUxZKGVjKSkKLSAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywg
YXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKLX0KLQotCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKy8vIEZJWE1FOiBEZWxldGUgdGhpcyBmaWxlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158866</attachid>
            <date>2012-08-16 11:49:11 -0700</date>
            <delta_ts>2012-08-16 13:44:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94207-20120816114836.patch</filename>
            <type>text/plain</type>
            <size>67347</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjVlMDU3MmM3ZWVmZWY5
OWI5NWIzOTk4ZjlkMDYzMDAzODhmODZmMy4uODA2OWEwMzQ4ZTBiNzdjZjEwYjA4OTI3NDFjYjBj
ZTRlZGM2NjY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTE2ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlyZWN0b3J5RW50cnkgc2hv
dWxkIHVzZSBEaWN0aW9uYXJ5IHJhdGhlciB0aGFuIGN1c3RvbSBiaW5kaW5ncyBjb2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRoaXMgY29k
ZSB3YXMgd3JpdHRlbiwgd2UgYWRkZWQgbmF0aXZlIHN1cHBvcnQgZm9yIFdlYklETAorICAgICAg
ICBEaWN0aW9uYXJ5IG9iamVjdHMuIFRoaXMgcGF0Y2ggbW92ZXMgRGlyZWN0b3J5RW50cnkgdG8g
dXNlIHRoaXMKKyAgICAgICAgYXV0b21hdGljIGZhY2lsaXR5IGluc3RlYWQgb2YgY3VzdG9tIGNv
ZGUuCisKKyAgICAgICAgSSd2ZSBhbHNvIHJlbmFtZWQgYW5kIHNpbXBsaWZpZWQgV2ViS2l0Rmxh
Z3MuIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZQorICAgICAgICB0aGlzIG9iamVjdCB3YXMgbm8g
bG9uZ2VyIGV4cG9zZWQgdmlhIElETCAoZXZlbiBiZWZvcmUgdG8gdGhpcyBwYXRjaCkuCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVt
QmFzZTo6Z2V0RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0
RGlyZWN0b3J5KToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJh
c2UuaDoKKyAgICAgICAgKERPTUZpbGVTeXN0ZW1CYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5
RW50cnk6OmdldEZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5RW50cnk6OmdldERp
cmVjdG9yeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5Lmg6
CisgICAgICAgIChEaXJlY3RvcnlFbnRyeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVt
L0RpcmVjdG9yeUVudHJ5LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5U3luYzo6
Z2V0RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVj
dG9yeSk6CisgICAgICAgICogTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5o
OgorICAgICAgICAoRGlyZWN0b3J5RW50cnlTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0
ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc29sdmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUZsYWdzLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUZsYWdzOjpGaWxlU3lzdGVt
RmxhZ3MpOgorICAgICAgICAoRmlsZVN5c3RlbUZsYWdzKToKKyAgICAgICAgKiBNb2R1bGVzL2Zp
bGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29udGV4dEZpbGVTeXN0ZW06OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1TeW5j
VVJMKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAg
ICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50
cnlDdXN0b20uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGlyZWN0b3J5
RW50cnlTeW5jQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcDogUmVtb3ZlZC4KKwog
MjAxMi0wOC0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gQmFkIHV0ZjggZGF0YSBpcyBiZWluZyBwYXNzZWQgdG8gZW5jaGFudF9k
aWN0X2NoZWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyZjVhOGM3YmRmNmU3
NjM4Njg3NWQ4YjY5NTgxZjE0YTVkZjg5MDFjLi44OTU3NDk2NjIyMGM3ODA4NTU0MDM5NGJkNjZj
OTk4NzE0MjZiYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE3NTEsNiAr
MTc1MSw3IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBcCisJU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbVR5cGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oIFwKQEAgLTE3NjQsNyArMTc2NSw2IEBA
IHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9NZXRhZGF0YS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
V2ViS2l0RmxhZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtl
ckNvbnRleHRGaWxlU3lzdGVtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2FtZXBhZC9HYW1lcGFkLmNwcCBcCkBAIC0yMjI0LDggKzIyMjQsNiBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90
aW9uRXZlbnRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFbGVtZW50Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
bnRyeUN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKaW5kZXggZDkzOGI4MDI1NjA4NWQ0MGNjZWE0
NjQ0YjA1NjliYTI5OTgyNWYzNy4uYTZlZTY0MjU1OTI3MjgwZWRmZWIwYmVhYzlmYjY1OGIwMzY3
ZjFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC0yMjIsMjkgKzIyMiwyOSBAQCBib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpnZXRQYXJlbnQoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNl
OjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiti
b29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiBmbGFncywgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKIHsKICAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOwogICAgIGlmICgh
cGF0aFRvQWJzb2x1dGVQYXRoKG1fdHlwZSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJh
Y2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2ssIHRoaXMsIGFic29sdXRlUGF0aCwgZmFsc2UpOwotICAgIGlmIChmbGFncyAmJiBmbGFncy0+
aXNDcmVhdGUoKSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoY3JlYXRl
RmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJh
Y2tzLnJlbGVhc2UoKSk7CisgICAgaWYgKGZsYWdzLmNyZWF0ZSkKKyAgICAgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNyZWF0ZUZpbGUoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBhdGgpLCBm
bGFncy5leGNsdXNpdmUsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGVsc2UKICAgICAgICAg
bV9hc3luY0ZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0
ZVBhdGgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogZW50cnks
IGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJlY3Rv
cnkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGaWxl
U3lzdGVtRmxhZ3MmIGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIFN0
cmluZyBhYnNvbHV0ZVBhdGg7CiAgICAgaWYgKCFwYXRoVG9BYnNvbHV0ZVBhdGgobV90eXBlLCBl
bnRyeSwgcGF0aCwgYWJzb2x1dGVQYXRoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
T3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCB0cnVl
KTsKLSAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCi0gICAgICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoY3JlYXRlRmlsZVN5c3RlbVVSTChhYnNvbHV0ZVBh
dGgpLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgaWYg
KGZsYWdzLmNyZWF0ZSkKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9y
eShjcmVhdGVGaWxlU3lzdGVtVVJMKGFic29sdXRlUGF0aCksIGZsYWdzLmV4Y2x1c2l2ZSwgY2Fs
bGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgZWxzZQogICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
ZGlyZWN0b3J5RXhpc3RzKGNyZWF0ZUZpbGVTeXN0ZW1VUkwoYWJzb2x1dGVQYXRoKSwgY2FsbGJh
Y2tzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCmluZGV4IGEzN2NhYjA0
YjhlNWRhNDdhMjI2NjQwNDQyOTRhMTExMGVjYmZhMWMuLmFlMzgyNzhiMTJjOTYxOWMwZjYyYWEz
NjAzNDJjY2ZiY2FhMWFmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0zNCwxMCArMzQsMTAgQEAKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNs
dWRlICJGaWxlU3lzdGVtRmxhZ3MuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIldl
YktpdEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCkBAIC05OCw4ICs5OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92
ZShjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4pOwogICAgIGJvb2wgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgRW50cnlC
YXNlKiwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+
KTsKICAgICBib29sIGdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKLSAgICBib29sIGdldEZpbGUo
Y29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZs
YWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
Pik7Ci0gICAgYm9vbCBnZXREaXJlY3RvcnkoY29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgYm9vbCBnZXRGaWxlKGNvbnN0IEVu
dHJ5QmFzZSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRmlsZVN5c3RlbUZsYWdzJiwgUGFz
c1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAg
Ym9vbCBnZXREaXJlY3RvcnkoY29uc3QgRW50cnlCYXNlKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBGaWxlU3lzdGVtRmxhZ3MmLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICBib29sIHJlYWREaXJlY3RvcnkoUGFzc1JlZlB0cjxE
aXJlY3RvcnlSZWFkZXJCYXNlPiwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJp
ZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5
LmNwcAppbmRleCAwZjZlNDlmNDQyM2EwNDhlNTViM2RhYWIyODA4MGFlMzkzM2U2MWRhLi5jZDkw
ZTFmNDU0NDg4YTAxZGU3MjNmNWExNDVmNWVmMWMxYzRlMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeS5jcHAKQEAgLTUxLDE1
ICs1MSwxNyBAQCBQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNy
ZWF0ZVJlYWRlcigpCiAgICAgcmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5
c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKLXZvaWQgRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0
cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFja1JlZikKK3ZvaWQgRGlyZWN0b3J5RW50cnk6OmdldEZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrUmVmKQogeworICAgIEZpbGVTeXN0ZW1GbGFncyBmbGFncyhvcHRpb25zKTsKICAg
ICBSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrUmVmKTsK
ICAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkKICAgICAgICAgZmlsZXN5c3RlbSgpLT5zY2hlZHVs
ZUNhbGxiYWNrKGVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlRXJyb3I6OmNyZWF0ZShGaWxl
RXJyb3I6OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUikpOwogfQogCi12b2lkIERpcmVjdG9yeUVu
dHJ5OjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZs
YWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBh
c3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1JlZikKK3ZvaWQgRGlyZWN0b3J5
RW50cnk6OmdldERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2tSZWYpCiB7CisgICAgRmlsZVN5c3Rl
bUZsYWdzIGZsYWdzKG9wdGlvbnMpOwogICAgIFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKGVycm9yQ2FsbGJhY2tSZWYpOwogICAgIGlmICghbV9maWxlU3lzdGVtLT5nZXREaXJl
Y3RvcnkodGhpcywgcGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykp
CiAgICAgICAgIGZpbGVzeXN0ZW0oKS0+c2NoZWR1bGVDYWxsYmFjayhlcnJvckNhbGxiYWNrLnJl
bGVhc2UoKSwgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpJTlZBTElEX01PRElGSUNBVElP
Tl9FUlIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9E
aXJlY3RvcnlFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVj
dG9yeUVudHJ5LmgKaW5kZXggYjI3NDExYTg2MWJkYzBiYTNmMjgwODk1NjM3NzllNTVjZDljOWE5
NC4uNjJkOTllMzk1MjA4MzU1Njg0NjBhZjU0ZGYxZWJkYzJkODUzYTY5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmgKQEAgLTM0
LDggKzM0LDggQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJFbnRyeS5o
IgorI2luY2x1ZGUgIkZpbGVTeXN0ZW1GbGFncy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RmxhZ3MuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTU2LDggKzU2LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVhdGVSZWFkZXIoKTsKLSAgICB2
b2lkIGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiA9
IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+ID0gMCk7Ci0gICAgdm9pZCBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
UmVmUHRyPFdlYktpdEZsYWdzPiA9IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gPSAwLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7CisgICAgdm9pZCBnZXRGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgRGljdGlvbmFyeSYgPSBEaWN0aW9uYXJ5KCksIFBhc3NSZWZQdHI8
RW50cnlDYWxsYmFjaz4gPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+ID0gMCk7CisgICAg
dm9pZCBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiA9
IERpY3Rpb25hcnkoKSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiA9IDAsIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gPSAwKTsKICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSAwLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+ID0gMCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5LmlkbAppbmRleCBjNmM5YWU5YmIxOGM0
YzdjNmEzNmVkOGJhMzdiYzVkMzA0Mjc2MjA4Li5iNDczN2I0MWQwY2YwYjczM2ZjNDY4NGI5NTAx
NWM0MTY0MTg4MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9EaXJlY3RvcnlFbnRyeS5pZGwKQEAgLTM2LDggKzM2LDggQEAgbW9kdWxlIHN0b3JhZ2Ug
ewogICAgICAgICBKU05vU3RhdGljVGFibGVzCiAgICAgXSBEaXJlY3RvcnlFbnRyeSA6IEVudHJ5
IHsKICAgICAgICAgRGlyZWN0b3J5UmVhZGVyIGNyZWF0ZVJlYWRlcigpOwotICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGdldEZpbGUoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZp
bmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIHBhdGgsIGluIFtPcHRpb25hbF0gV2ViS2l0Rmxh
Z3MgZmxhZ3MsIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrLCBpbiBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJh
Y2spOwotICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldERpcmVjdG9yeShpbiBbVHJlYXROdWxsQXM9
TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwg
aW4gW09wdGlvbmFsXSBXZWJLaXRGbGFncyBmbGFncywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10g
RW50cnlDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVy
cm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjayk7CisgICAgICAgIHZvaWQgZ2V0RmlsZShpbiBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJp
bmcgcGF0aCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMsIGluIFtPcHRpb25hbCwg
Q2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBbT3B0aW9uYWwsIENh
bGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOworICAgICAgICB2b2lkIGdldERp
cmVjdG9yeShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxs
U3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMs
IGluIFtPcHRpb25hbCwgQ2FsbGJhY2tdIEVudHJ5Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBp
biBbT3B0aW9uYWwsIENhbGxiYWNrXSBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwogICAg
ICAgICB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGluIFtDYWxsYmFja10gVm9pZENhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgaW4gW09wdGlvbmFsLCBDYWxsYmFja10gRXJyb3JDYWxsYmFjayBlcnJv
ckNhbGxiYWNrKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAppbmRleCAxMGRlYWNlYjA5Njli
N2JhMDExNmQyY2ZmMDM3Nzk4NGI0OGRmMWEwLi4wOTYwZWVkMzZiNmYzNzQyMDlkMDViYTRiYzFk
YWY0ZmRkZjAxYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmNwcApAQCAtNTEsOSArNTEsMTAgQEAgUGFzc1Jl
ZlB0cjxEaXJlY3RvcnlSZWFkZXJTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmNyZWF0ZVJlYWRl
cihFeGNlcHRpb25Db2RlJikKICAgICByZXR1cm4gRGlyZWN0b3J5UmVhZGVyU3luYzo6Y3JlYXRl
KG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7CiB9CiAKLVBhc3NSZWZQdHI8RmlsZUVudHJ5U3lu
Yz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1Jl
ZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxG
aWxlRW50cnlTeW5jPiBEaXJlY3RvcnlFbnRyeVN5bmM6OmdldEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBlYyA9IDA7CisgICAgRmlsZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlvbnMpOwogICAgIEVudHJ5
U3luY0NhbGxiYWNrSGVscGVyIGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgp
KTsKICAgICBpZiAoIW1fZmlsZVN5c3RlbS0+Z2V0RmlsZSh0aGlzLCBwYXRoLCBmbGFncywgaGVs
cGVyLnN1Y2Nlc3NDYWxsYmFjaygpLCBoZWxwZXIuZXJyb3JDYWxsYmFjaygpKSkgewogICAgICAg
ICBlYyA9IEZpbGVFeGNlcHRpb246OklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUjsKQEAgLTYyLDkg
KzYzLDEwIEBAIFBhc3NSZWZQdHI8RmlsZUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpn
ZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlCiAgICAgcmV0dXJuIHN0YXRpY19wb2lu
dGVyX2Nhc3Q8RmlsZUVudHJ5U3luYz4oaGVscGVyLmdldFJlc3VsdChlYykpOwogfQogCi1QYXNz
UmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRGlyZWN0b3J5RW50cnlTeW5jOjpnZXREaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgRXhj
ZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5U3luYz4gRGlyZWN0b3J5
RW50cnlTeW5jOjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9u
YXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7CisgICAgRmls
ZVN5c3RlbUZsYWdzIGZsYWdzKG9wdGlvbnMpOwogICAgIEVudHJ5U3luY0NhbGxiYWNrSGVscGVy
IGhlbHBlcihtX2ZpbGVTeXN0ZW0tPmFzeW5jRmlsZVN5c3RlbSgpKTsKICAgICBpZiAoIW1fZmls
ZVN5c3RlbS0+Z2V0RGlyZWN0b3J5KHRoaXMsIHBhdGgsIGZsYWdzLCBoZWxwZXIuc3VjY2Vzc0Nh
bGxiYWNrKCksIGhlbHBlci5lcnJvckNhbGxiYWNrKCkpKSB7CiAgICAgICAgIGVjID0gRmlsZUV4
Y2VwdGlvbjo6SU5WQUxJRF9NT0RJRklDQVRJT05fRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RpcmVjdG9yeUVudHJ5U3luYy5oCmluZGV4IGI5Zjdh
ODVjY2NhYTEwY2EyZmVmNWVlZGE0ODBjN2FhZWY2OWNmNDAuLjY5ODliMjc3MDBlOThjMzk5OWRj
YWU5NDBkMGY5ODk0MWRjZDlmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9EaXJlY3RvcnlFbnRyeVN5bmMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmgKQEAgLTM0LDggKzM0LDggQEAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJFbnRyeVN5bmMuaCIKKyNpbmNsdWRl
ICJGaWxlU3lzdGVtRmxhZ3MuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1
ZGUgIldlYktpdEZsYWdzLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQYXNz
UmVmUHRyPERpcmVjdG9yeVJlYWRlclN5bmM+IGNyZWF0ZVJlYWRlcihFeGNlcHRpb25Db2RlJik7
Ci0gICAgUGFzc1JlZlB0cjxGaWxlRW50cnlTeW5jPiBnZXRGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVm
UHRyPERpcmVjdG9yeUVudHJ5U3luYz4gZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxXZWJLaXRGbGFncz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRy
PEZpbGVFbnRyeVN5bmM+IGdldEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9u
YXJ5JiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnlTeW5j
PiBnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoRXhjZXB0aW9uQ29kZSYp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RpcmVjdG9yeUVudHJ5U3luYy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5jLmlkbAppbmRleCA2NmMyODhmYmJjNWEyY2VhMmM4M2E1
YTUxMzM2N2Q2MzY5ZDg3NDA1Li4xM2MzYWFiNWYxMGQ5NTZkYWQ2YWVlOTI2MTY0ZTk1YjkzY2Y0
ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0
b3J5RW50cnlTeW5jLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RGlyZWN0b3J5RW50cnlTeW5jLmlkbApAQCAtMzYsOCArMzYsOCBAQCBtb2R1bGUgc3RvcmFnZSB7
CiAgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKICAgICBdIERpcmVjdG9yeUVudHJ5U3luYyA6IEVu
dHJ5U3luYyB7CiAgICAgICAgIERpcmVjdG9yeVJlYWRlclN5bmMgY3JlYXRlUmVhZGVyKCkgcmFp
c2VzIChGaWxlRXhjZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gRmlsZUVudHJ5U3luYyBnZXRG
aWxlKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJp
bmddIERPTVN0cmluZyBwYXRoLCBpbiBXZWJLaXRGbGFncyBmbGFncykgcmFpc2VzIChGaWxlRXhj
ZXB0aW9uKTsKLSAgICAgICAgW0N1c3RvbV0gRGlyZWN0b3J5RW50cnlTeW5jIGdldERpcmVjdG9y
eShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgcGF0aCwgaW4gV2ViS2l0RmxhZ3MgZmxhZ3MpIHJhaXNlcyAoRmlsZUV4Y2Vw
dGlvbik7CisgICAgICAgIEZpbGVFbnRyeVN5bmMgZ2V0RmlsZShpbiBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZywgVHJlYXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4g
RGljdGlvbmFyeSBmbGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKKyAgICAgICAgRGlyZWN0
b3J5RW50cnlTeW5jIGdldERpcmVjdG9yeShpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVHJl
YXRVbmRlZmluZWRBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgcGF0aCwgaW4gRGljdGlvbmFyeSBm
bGFncykgcmFpc2VzIChGaWxlRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCByZW1vdmVSZWN1cnNp
dmVseSgpIHJhaXNlcyAoRmlsZUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cAppbmRleCBhYjA4MzRiMTJkODAyODM1MTkyNzJjMDg5NDA1YjQ3N2ViZjJlNDMxLi45ZDgxYTIy
NDZjMzI1YmZiYjk5ZWNmMzNjZTgyMGM5NGU2OTc2YjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCkBA
IC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGVycm9yKTsK
ICAgICAgICAgaWYgKGVycm9yLT5jb2RlKCkgPT0gRmlsZUVycm9yOjpUWVBFX01JU01BVENIX0VS
UikKLSAgICAgICAgICAgIG1fcm9vdC0+Z2V0RmlsZShtX2ZpbGVQYXRoLCAwLCBtX3N1Y2Nlc3ND
YWxsYmFjaywgbV9lcnJvckNhbGxiYWNrKTsKKyAgICAgICAgICAgIG1fcm9vdC0+Z2V0RmlsZSht
X2ZpbGVQYXRoLCBEaWN0aW9uYXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJh
Y2spOwogICAgICAgICBlbHNlIGlmIChtX2Vycm9yQ2FsbGJhY2spCiAgICAgICAgICAgICBtX2Vy
cm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5
c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3QKIHsKICAgICBBU1NFUlQo
YXN5bmNGaWxlU3lzdGVtKTsKICAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBET01G
aWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBt
X3R5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSktPnJvb3QoKTsKLSAgICByb290LT5nZXRE
aXJlY3RvcnkobV9maWxlUGF0aCwgMCwgbV9zdWNjZXNzQ2FsbGJhY2ssIEVycm9yQ2FsbGJhY2tX
cmFwcGVyOjpjcmVhdGUobV9zdWNjZXNzQ2FsbGJhY2ssIG1fZXJyb3JDYWxsYmFjaywgcm9vdCwg
bV9maWxlUGF0aCkpOworICAgIHJvb3QtPmdldERpcmVjdG9yeShtX2ZpbGVQYXRoLCBEaWN0aW9u
YXJ5KCksIG1fc3VjY2Vzc0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrV3JhcHBlcjo6Y3JlYXRlKG1f
c3VjY2Vzc0NhbGxiYWNrLCBtX2Vycm9yQ2FsbGJhY2ssIHJvb3QsIG1fZmlsZVBhdGgpKTsKIH0K
IAogLy8gTWV0YWRhdGFDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1GbGFncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzMTZjNzQ5OTA3ZDlj
NWU5MzYzOTE0MzhjNTY0NjJkZWZiZDNmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUZsYWdzLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRmlsZVN5c3RlbUZsYWdzX2gKKyNkZWZpbmUgRmlsZVN5c3RlbUZsYWdzX2gKKwor
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRmlsZVN5c3RlbUZsYWdzICB7CisgICAgZXhwbGlj
aXQgRmlsZVN5c3RlbUZsYWdzKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCisgICAgICAgIDog
Y3JlYXRlKGZhbHNlKQorICAgICAgICAsIGV4Y2x1c2l2ZShmYWxzZSkKKyAgICB7CisgICAgICAg
IG9wdGlvbnMuZ2V0KCJjcmVhdGUiLCBjcmVhdGUpOworICAgICAgICBvcHRpb25zLmdldCgiZXhj
bHVzaXZlIiwgZXhjbHVzaXZlKTsKKyAgICB9CisKKyAgICBib29sIGNyZWF0ZTsKKyAgICBib29s
IGV4Y2x1c2l2ZTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKKwor
I2VuZGlmIC8vIEZpbGVTeXN0ZW1GbGFnc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9XZWJLaXRGbGFncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
NzViNDcyMzAxNGQyMjE2ODU0NjI4YTZjODY4MjhlODY4MjZjMDg2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9XZWJLaXRGbGFncy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViS2l0RmxhZ3NfaAotI2RlZmluZSBXZWJLaXRGbGFnc19oCi0KLSNpZiBFTkFCTEUoRklM
RV9TWVNURU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViS2l0RmxhZ3Mg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRGbGFncz4gewotcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYktpdEZsYWdzPiBjcmVhdGUoYm9vbCBjcmVhdGUgPSBmYWxzZSwgYm9vbCBl
eGNsdXNpdmUgPSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
S2l0RmxhZ3MoY3JlYXRlLCBleGNsdXNpdmUpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzQ3JlYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGU7IH0KLSAgICB2b2lkIHNldENyZWF0ZShib29sIGNy
ZWF0ZSkgeyBtX2NyZWF0ZSA9IGNyZWF0ZTsgfQotICAgIGJvb2wgaXNFeGNsdXNpdmUoKSBjb25z
dCB7IHJldHVybiBtX2V4Y2x1c2l2ZTsgfQotICAgIHZvaWQgc2V0RXhjbHVzaXZlKGJvb2wgZXhj
bHVzaXZlKSB7IG1fZXhjbHVzaXZlID0gZXhjbHVzaXZlOyB9Ci0KLXByaXZhdGU6Ci0gICAgV2Vi
S2l0RmxhZ3MoYm9vbCBjcmVhdGUsIGJvb2wgZXhjbHVzaXZlKQotICAgICAgICA6IG1fY3JlYXRl
KGNyZWF0ZSkKLSAgICAgICAgLCBtX2V4Y2x1c2l2ZShleGNsdXNpdmUpCi0gICAgewotICAgIH0K
LSAgICBib29sIG1fY3JlYXRlOwotICAgIGJvb2wgbV9leGNsdXNpdmU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jZW5kaWYgLy8gV2Vi
S2l0RmxhZ3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAKaW5kZXggZDYyZWUzMjczOGQ2YjA2
MmM3N2Y0YzExOTIxNWZmYjA2Mjg1MDc3NS4uNmY4ZTUwYzQxNjQ1OGFlOTQ4ZmJjN2I2NzAxNzMz
NDlkYmE3MTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L1dvcmtlckNvbnRleHRGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vV29ya2VyQ29udGV4dEZpbGVTeXN0ZW0uY3BwCkBAIC0xMjcsOSArMTI3LDkg
QEAgUGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtlckNvbnRleHRGaWxlU3lzdGVtOjp3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1UKICAgICBpZiAoIWZpbGVTeXN0ZW0pCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgUmVmUHRyPEVudHJ5U3luYz4gZW50cnkgPSBmaWxlU3lzdGVtLT5y
b290KCktPmdldERpcmVjdG9yeShmaWxlUGF0aCwgMCwgZWMpOworICAgIFJlZlB0cjxFbnRyeVN5
bmM+IGVudHJ5ID0gZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXREaXJlY3RvcnkoZmlsZVBhdGgsIERp
Y3Rpb25hcnkoKSwgZWMpOwogICAgIGlmIChlYyA9PSBGaWxlRXhjZXB0aW9uOjpUWVBFX01JU01B
VENIX0VSUikKLSAgICAgICAgcmV0dXJuIGZpbGVTeXN0ZW0tPnJvb3QoKS0+Z2V0RmlsZShmaWxl
UGF0aCwgMCwgZWMpOworICAgICAgICByZXR1cm4gZmlsZVN5c3RlbS0+cm9vdCgpLT5nZXRGaWxl
KGZpbGVQYXRoLCBEaWN0aW9uYXJ5KCksIGVjKTsKIAogICAgIHJldHVybiBlbnRyeS5yZWxlYXNl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQppbmRleCAyZjI4MTQxNWIzZTM5YWY5MWE5MTc0YWZiY2JiOTU0OTZj
ZmIzMWRhLi4yNmVmMTAyMjE1NDdjOTM2OTU3M2YxNzFjMWVjNmQxZjcxOWUyNzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKQEAgLTI5ODYsMTMgKzI5ODYsMTMgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJ
TEVfU1lTVEVNPTEpIHsKICAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMu
aCBcCiAgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2suaCBcCiAg
ICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmggXAorICAgICAg
ICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUZsYWdzLmggXAogICAgICAgICBNb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVdyaXRlci5oIFwKICAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVXcml0ZXJCYXNlLmggXAogICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVdyaXRlckJh
c2VDYWxsYmFjay5oIFwKICAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDYWxs
YmFjay5oIFwKICAgICAgICAgTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVXcml0ZXJDbGllbnQuaCBc
CiAgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9GaWxlV3JpdGVyU3luYy5oIFwKLSAgICAgICAg
TW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmggXAogICAgICAgICBNb2R1bGVzL2ZpbGVz
eXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmggXAogICAgICAgICBNb2R1bGVzL2ZpbGVzeXN0ZW0vTWV0
YWRhdGEuaCBcCiAgICAgICAgIE1vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxiYWNrLmgg
XApAQCAtMzAwMSw4ICszMDAxLDYgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTEVfU1lT
VEVNPTEpIHsKICAgICAgICAgcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmgKIAogICAgIFNPVVJDRVMg
Kz0gXAotICAgICAgICBiaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCBcCi0g
ICAgICAgIGJpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNFbnRyeVN5bmNDdXN0b20uY3BwIFwKICAgICAgICAgcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVt
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IDUyNjMwNzU2ODlmYmFlMmExZDdhNzQ5NzU3ZThmZmVl
NWJhYjQ0ZjAuLmRkY2E2ZThkODcwNWE1Nzc2MGM2NzFiMTBmMWNmNzllYzNhMjJjNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKQEAgLTI1MCw4ICsyNTAsNiBAQCBFTkRJRiAoKQogCiBpZiAoRU5BQkxFX0ZJ
TEVfU1lTVEVNKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICBiaW5k
aW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcAotICAgICAgICBiaW5kaW5ncy9qcy9K
U0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNFbnRy
eUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNFbnRyeVN5bmNDdXN0b20uY3BwCiAg
ICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9Vc2VWOC5jbWFrZQppbmRleCA0MTY0OTJkNTFlMTQxNjkyZGVhZTE3OWM5NzdiZDBlN2Yx
NWYxNTdjLi41MGI4ZDJjZjllZGIxMTlmODYzMTEzZWJkOTIwNTllZGIwZTE4MTFhIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VW
OC5jbWFrZQpAQCAtOTQsOCArOTQsNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCi0g
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCi0gICAgYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcAogICAgIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RW50cnlTeW5jQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRlZjI5YzVkOWVmNTFhNzM3
NmQwOTc5NGZiZjVhZTM4ZTZjMWEyNmIuLjNkNzYzNjZmNTFjOTc1MDg3ODdiNWE4NjA0ZTFlNjlj
NzkxZDhiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0MjAsNiArMTQyMCw3IEBACiAgICAgICAg
ICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0VudHJ5U3luYy5oJywKICAgICAgICAgICAgICdNb2R1
bGVzL2ZpbGVzeXN0ZW0vRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2Zp
bGVzeXN0ZW0vRmlsZUNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtRmxhZ3MuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0Zp
bGVFbnRyeS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlRW50cnku
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuY3BwJywK
QEAgLTE0NDMsNyArMTQ0NCw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL01l
dGFkYXRhLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9NZXRhZGF0YUNhbGxi
YWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9TeW5jQ2FsbGJhY2tIZWxw
ZXIuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9maWxlc3lzdGVtL1dlYktpdEZsYWdzLmgnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5j
cHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJDb250ZXh0RmlsZVN5
c3RlbS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2ZpbGVzeXN0ZW0vY2hyb21pdW0vRE9NRmls
ZVN5c3RlbUNocm9taXVtLmNwcCcsCkBAIC0xOTg4LDggKzE5ODgsNiBAQAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRGVza3RvcE5vdGlmaWNhdGlvbnNDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCcsCi0g
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAnLAotICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTRW50cnlDdXN0b20uY3BwJywKQEAgLTIzMjAsOCArMjMxOCw2IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3Jp
ZW50YXRpb25FdmVudEN1c3RvbS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9jdXN0b20vVjhEb2N1bWVudExvY2F0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlDdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZjA3YTI5ZTRmODkwZjQ4NDcy
ODQ1Y2ZhMjZlM2Q1MzQxODY3ZDA1OS4uZTY0ZGZjODgxM2EwNzNhMjhmYTU5YWNkMzkyMDQ2YThj
ZWU4M2IzOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTI0NzMwLDYgKzI0NzMwLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5c3RlbUZs
YWdzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cRmlsZVN5c3RlbVR5cGUuaCIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KQEAgLTI0Nzg2LDEwICsyNDc5MCw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGZpbGVzeXN0ZW1cV2ViS2l0Rmxh
Z3MuaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcZmlsZXN5c3RlbVxXb3JrZXJDb250ZXh0RmlsZVN5c3RlbS5jcHAiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CkBAIC02NTY3MCwxNCArNjU2NzAsNiBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNEaXJl
Y3RvcnlFbnRyeUN1c3RvbS5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKLQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RpcmVjdG9yeUVudHJ5U3luY0N1c3Rv
bS5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xKU0RvY3VtZW50Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA1NjhiNTdlOTE5NjZhNTAxY2I1OTc1NmNhNTYwNjNkMzM3ZTlj
MWJmLi40YWEwNGQ0OTcyMmJiYzhlYjVmNDRlOTFhMGE1OWNhZmFlMGE0NzhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTQ0
LDcgKzI5NDQsNiBAQAogCQk4OTNDNDdCQjEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVy
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODkzQzQ3QjkxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJODkzQzQ3QkMxMjM4QTBBOTAwMkIzRDg2IC8qIEpTRmlsZVdyaXRlckNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdC
QTEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLzsgfTsKIAkJODkz
QzQ3Q0MxMjNFRUJBMjAwMkIzRDg2IC8qIEpTRW50cnlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3Q0ExMjNFRUJBMjAwMkIzRDg2
IC8qIEpTRW50cnlDdXN0b20uY3BwICovOyB9OwotCQk4OTNDNDdERjEyM0VGNEE5MDAyQjNEODYg
LyogSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdERTEyM0VGNEE5MDAyQjNEODYgLyogSlNEaXJlY3Rv
cnlFbnRyeUN1c3RvbS5jcHAgKi87IH07CiAJCTg5M0M0ODAwMTI0OEJEM0EwMDJCM0Q4NiAvKiBE
aXJlY3RvcnlFbnRyeVN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODkzQzQ3RjAxMjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeUVudHJ5U3lu
Yy5jcHAgKi87IH07CiAJCTg5M0M0ODAxMTI0OEJEM0EwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRy
eVN5bmMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
M0M0N0YxMTI0OEJEMzkwMDJCM0Q4NiAvKiBEaXJlY3RvcnlFbnRyeVN5bmMuaCAqLzsgfTsKIAkJ
ODkzQzQ4MDIxMjQ4QkQzQTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3RjIxMjQ4QkQz
OTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3BwICovOyB9OwpAQCAtMjk2MCw3ICsy
OTU5LDYgQEAKIAkJODkzQzQ4MEQxMjQ4QkQzQTAwMkIzRDg2IC8qIEVudHJ5U3luYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ3RkQxMjQ4QkQz
OTAwMkIzRDg2IC8qIEVudHJ5U3luYy5oICovOyB9OwogCQk4OTNDNDgwRTEyNDhCRDNBMDAyQjNE
ODYgLyogRmlsZUVudHJ5U3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4OTNDNDdGRTEyNDhCRDM5MDAyQjNEODYgLyogRmlsZUVudHJ5U3luYy5j
cHAgKi87IH07CiAJCTg5M0M0ODBGMTI0OEJEM0EwMDJCM0Q4NiAvKiBGaWxlRW50cnlTeW5jLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTNDNDdGRjEy
NDhCRDM5MDAyQjNEODYgLyogRmlsZUVudHJ5U3luYy5oICovOyB9OwotCQk4OTNDNDgyMTEyNDk1
MzVCMDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ4MjAxMjQ5NTM1QjAwMkIz
RDg2IC8qIEpTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCAqLzsgfTsKIAkJODkzQzQ4MzIx
MjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5RW50cnlTeW5jLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5M0M0ODI2MTI0OTU0NzIwMDJCM0Q4
NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgKi87IH07CiAJCTg5M0M0ODMzMTI0OTU0NzIw
MDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkzQzQ4MjcxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGly
ZWN0b3J5RW50cnlTeW5jLmggKi87IH07CiAJCTg5M0M0ODM0MTI0OTU0NzIwMDJCM0Q4NiAvKiBK
U0RpcmVjdG9yeVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODkzQzQ4MjgxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5UmVh
ZGVyU3luYy5jcHAgKi87IH07CkBAIC0yOTk0LDcgKzI5OTIsNyBAQAogCQk4OTg3ODU2MzEyMkNB
MDY0MDAzQUFCREEgLyogRmlsZVN5c3RlbUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU0QTEyMkNBMDY0MDAzQUFCREEgLyogRmls
ZVN5c3RlbUNhbGxiYWNrLmggKi87IH07CiAJCTg5ODc4NTY0MTIyQ0EwNjQwMDNBQUJEQSAvKiBG
aWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg5ODc4NTRCMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcCAqLzsgfTsKIAkJODk4Nzg1NjUxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1D
YWxsYmFja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg5ODc4NTRDMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi87IH07
Ci0JCTg5ODc4NTY2MTIyQ0EwNjQwMDNBQUJEQSAvKiBXZWJLaXRGbGFncy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1NEQxMjJDQTA2NDAwM0FB
QkRBIC8qIFdlYktpdEZsYWdzLmggKi87IH07CisJCTg5ODc4NTY2MTIyQ0EwNjQwMDNBQUJEQSAv
KiBGaWxlU3lzdGVtRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5ODc4NTREMTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lzdGVtRmxhZ3MuaCAq
LzsgfTsKIAkJODk4Nzg1NjcxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg3ODU0RTEy
MkNBMDY0MDAzQUFCREEgLyogTG9jYWxGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJODk4Nzg1Njgx
MjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk4Nzg1NEYxMjJDQTA2NDAwM0FBQkRBIC8qIExv
Y2FsRmlsZVN5c3RlbS5oICovOyB9OwogCQk4OTg3ODU2OTEyMkNBMDY0MDAzQUFCREEgLyogTWV0
YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5
ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRhZGF0YS5oICovOyB9OwpAQCAtMTAwNzMsNyAr
MTAwNzEsNiBAQAogCQk4OTNDNDdCOTEyMzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlV3Jp
dGVyQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdCQTEy
MzhBMEE5MDAyQjNEODYgLyogSlNGaWxlV3JpdGVyQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlV3JpdGVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODkzQzQ3Q0ExMjNFRUJBMjAwMkIzRDg2IC8qIEpTRW50cnlDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbnRyeUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5M0M0N0RFMTIzRUY0QTkwMDJCM0Q4
NiAvKiBKU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4OTNDNDdGMDEyNDhCRDM5MDAyQjNEODYgLyogRGlyZWN0b3J5RW50cnlT
eW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERpcmVjdG9yeUVu
dHJ5U3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5RW50cnlTeW5j
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjExMjQ4QkQzOTAwMkIz
RDg2IC8qIERpcmVjdG9yeUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBEaXJlY3RvcnlFbnRyeVN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3RlbS9EaXJl
Y3RvcnlFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ3RjIx
MjQ4QkQzOTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHBhdGggPSBN
b2R1bGVzL2ZpbGVzeXN0ZW0vRGlyZWN0b3J5UmVhZGVyU3luYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDA4OSw3ICsxMDA4Niw2IEBACiAJCTg5M0M0N0ZEMTI0OEJEMzkw
MDJCM0Q4NiAvKiBFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RW50cnlTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRW50cnlTeW5jLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5M0M0N0ZFMTI0OEJEMzkwMDJCM0Q4NiAvKiBGaWxl
RW50cnlTeW5jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZpbGVF
bnRyeVN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVFbnRyeVN5bmMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDdGRjEyNDhCRDM5MDAyQjNEODYg
LyogRmlsZUVudHJ5U3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxl
RW50cnlTeW5jLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZUVudHJ5U3luYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTNDNDgyMDEyNDk1MzVCMDAyQjNEODYgLyog
SlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4OTNDNDgyNjEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlF
bnRyeVN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEaXJl
Y3RvcnlFbnRyeVN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTNDNDgy
NzEyNDk1NDcyMDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEaXJlY3RvcnlFbnRyeVN5bmMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODkzQzQ4MjgxMjQ5NTQ3MjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5
UmVhZGVyU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Rp
cmVjdG9yeVJlYWRlclN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAx
MjMsNyArMTAxMTksNyBAQAogCQk4OTg3ODU0QTEyMkNBMDY0MDAzQUFCREEgLyogRmlsZVN5c3Rl
bUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbGVTeXN0ZW1D
YWxsYmFjay5oOyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTg3ODU0QjEyMkNBMDY0MDAzQUFCREEg
LyogRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDsgcGF0aCA9IE1vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODk4Nzg1NEMxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmlsZVN5c3RlbUNhbGxiYWNrcy5oOyBwYXRoID0g
TW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODk4Nzg1NEQxMjJDQTA2NDAwM0FBQkRBIC8qIFdlYktpdEZsYWdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYktpdEZsYWdzLmg7IHBhdGggPSBN
b2R1bGVzL2ZpbGVzeXN0ZW0vV2ViS2l0RmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODk4Nzg1NEQxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1GbGFncy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlU3lzdGVtRmxhZ3MuaDsgcGF0aCA9IE1v
ZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODk4Nzg1NEUxMjJDQTA2NDAwM0FBQkRBIC8qIExvY2FsRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb2NhbEZpbGVTeXN0ZW0uY3Bw
OyBwYXRoID0gTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTRGMTIyQ0EwNjQwMDNBQUJEQSAvKiBMb2NhbEZp
bGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG9jYWxGaWxlU3lz
dGVtLmg7IHBhdGggPSBNb2R1bGVzL2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5ODc4NTUwMTIyQ0EwNjQwMDNBQUJEQSAvKiBNZXRh
ZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZXRhZGF0YS5oOyBwYXRo
ID0gTW9kdWxlcy9maWxlc3lzdGVtL01ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzg1NSw2ICsxNzg1MSw3IEBACiAJCQkJRTFBQjFFQkUxNEU5RTNCMjAwNDQ5RTEz
IC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5pZGwgKi8sCiAJCQkJODk4Nzg1NEIxMjJDQTA2NDAwM0FB
QkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwICovLAogCQkJCTg5ODc4NTRDMTIyQ0EwNjQw
MDNBQUJEQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmggKi8sCisJCQkJODk4Nzg1NEQxMjJDQTA2
NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1GbGFncy5oICovLAogCQkJCTg5QzdDMkUwMTU1ODA0RjQw
MDdENUE3QiAvKiBGaWxlU3lzdGVtVHlwZS5oICovLAogCQkJCTk3NkQ2QzZFMTIyQjhBM0QwMDFG
RDFGNyAvKiBGaWxlVGhyZWFkLmNwcCAqLywKIAkJCQk5NzZENkM2RjEyMkI4QTNEMDAxRkQxRjcg
LyogRmlsZVRocmVhZC5oICovLApAQCAtMTc4ODEsNyArMTc4NzgsNiBAQAogCQkJCTk3NkQ2QzVD
MTIyQjhBM0QwMDFGRDFGNyAvKiBXZWJLaXRCbG9iQnVpbGRlci5jcHAgKi8sCiAJCQkJOTc2RDZD
NUQxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmggKi8sCiAJCQkJRTFBQjFF
QzMxNEU5RTNFMjAwNDQ5RTEzIC8qIFdlYktpdEJsb2JCdWlsZGVyLmlkbCAqLywKLQkJCQk4OTg3
ODU0RDEyMkNBMDY0MDAzQUFCREEgLyogV2ViS2l0RmxhZ3MuaCAqLywKIAkJCSk7CiAJCQluYW1l
ID0gZmlsZWFwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDIzNCw4ICsyMDIz
MCw2IEBACiAJCQkJMzM1MDNDQkYxMDE3OUMxQTAwM0I0N0UxIC8qIEpTRGVza3RvcE5vdGlmaWNh
dGlvbnNDdXN0b20uY3BwICovLAogCQkJCTMxRkIxQTZCMTIwQTVENjkwMERDMDJBMCAvKiBKU0Rl
dmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3
ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLywKLQkJCQk4OTNDNDdE
RTEyM0VGNEE5MDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAgKi8sCi0JCQkJ
ODkzQzQ4MjAxMjQ5NTM1QjAwMkIzRDg2IC8qIEpTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNw
cCAqLywKIAkJCQk0OUM3QkE4QzEwNDJGNUIxMDAwOUQ0NDcgLyogSlNEb2N1bWVudEN1c3RvbS5j
cHAgKi8sCiAJCQkJMkUwODg4RTUxMTQ4ODRFMjAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGFDdXN0
b20uY3BwICovLAogCQkJCTIyODg1RTYzMTMwMUFFNEMwMDUyNkU2OCAvKiBKU0RPTUltcGxlbWVu
dGF0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTIzMjc0LDYgKzIzMjY4LDcgQEAKIAkJCQk1MTRCM0Y3
MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODk4
Nzg1NjMxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODk4Nzg1NjUxMjJDQTA2NDAwM0FBQkRBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTg5ODc4NTY2MTIyQ0EwNjQwMDNBQUJEQSAvKiBGaWxlU3lz
dGVtRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2QzE3QTNFMTQ5MUQyRDQwMEQxMkJBMiAv
KiBGaWxlU3lzdGVtSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OUM3QzJFMTE1NTgwNEY0MDA3
RDVBN0IgLyogRmlsZVN5c3RlbVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzhFMTIy
QjhBM0QwMDFGRDFGNyAvKiBGaWxlVGhyZWFkLmggaW4gSGVhZGVycyAqLywKQEAgLTI1Mjk1LDcg
KzI1MjkwLDYgQEAKIAkJCQkyOUNENjFERTE0NkQwMjg5MDA2OEU4MkEgLyogV2ViS2l0Q1NTU2hh
ZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA1NjJGOTQ3MTU3M0VDRUIwMDMxQ0ExNiAv
KiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzlBREQy
MzBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTg5ODc4NTY2MTIyQ0EwNjQwMDNBQUJEQSAvKiBXZWJLaXRGbGFncy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTJGMzVFQjYxNTg3NDVBNDAwMzVDQjYzIC8qIFdlYktpdE5hbWVkRmxv
d0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5NEJENzk1MEY1NUM4RUUwMDc0Nzgy
OCAvKiBXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGMjUwRTRDRUI2RTAw
N0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjkz
Nyw5ICsyNjkzMSw3IEBACiAJCQkJNTkwRTFCNEIxMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNl
T3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0MzhBMjE0
MEMwREMwMDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5
ODc4NThBMTIyQ0EyNkEwMDNBQUJEQSAvKiBKU0RpcmVjdG9yeUVudHJ5LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTg5M0M0N0RGMTIzRUY0QTkwMDJCM0Q4NiAvKiBKU0RpcmVjdG9yeUVudHJ5Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5M0M0ODMyMTI0OTU0NzIwMDJCM0Q4NiAvKiBK
U0RpcmVjdG9yeUVudHJ5U3luYy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4OTNDNDgyMTEyNDk1
MzVCMDAyQjNEODYgLyogSlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODk4Nzg1OEMxMjJDQTI2QTAwM0FBQkRBIC8qIEpTRGlyZWN0b3J5UmVhZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg5M0M0ODM0MTI0OTU0NzIwMDJCM0Q4NiAvKiBKU0RpcmVj
dG9yeVJlYWRlclN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU5RERDODIwOUUxOThCQTAw
MUJGM0M2IC8qIEpTRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTAwYTY4NDVmZDA5ODI4MDUwNDFmYjFlMGFhYTI2MDlh
NWZhOTFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCi0KLSNpbmNsdWRlICJKU0RpcmVjdG9yeUVudHJ5LmgiCi0KLSNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVk
ZSAiSlNFbnRyeUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNFcnJvckNhbGxiYWNrLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSlNWYWx1ZSBKU0Rp
cmVjdG9yeUVudHJ5OjpnZXRGaWxlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotCi0gICAgRGlyZWN0b3J5RW50cnkq
IGltcCA9IHN0YXRpY19jYXN0PERpcmVjdG9yeUVudHJ5Kj4oaW1wbCgpKTsKLSAgICBjb25zdCBT
dHJpbmcmIHBhdGggPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotCi0gICAgaW50IGFyZ3NDb3VudCA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsKLSAgICBpZiAoYXJnc0NvdW50IDw9IDEpIHsKLSAgICAgICAgaW1wLT5n
ZXRGaWxlKHBhdGgpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSku
aXNOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgJiYgZXhlYy0+YXJn
dW1lbnQoMSkuaXNPYmplY3QoKSkgewotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+
YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNy
ZWF0ZSgpOwotICAgICAgICBKU1ZhbHVlIGpzQ3JlYXRlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiY3JlYXRlIikpOwotICAgICAgICBmbGFncy0+c2V0Q3JlYXRlKGpzQ3Jl
YXRlLnRvQm9vbGVhbigpKTsKLSAgICAgICAgSlNWYWx1ZSBqc0V4Y2x1c2l2ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImV4Y2x1c2l2ZSIpKTsKLSAgICAgICAgZmxhZ3Mt
PnNldEV4Y2x1c2l2ZShqc0V4Y2x1c2l2ZS50b0Jvb2xlYW4oKSk7Ci0gICAgfQotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpID4gMiAmJiAhZXhlYy0+YXJndW1lbnQoMikuaXNOdWxsKCkgJiYgIWV4ZWMt
PmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgyKS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOwotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gSlNFbnRyeUNhbGxiYWNrOjpjcmVhdGUo
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMikpLCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPiAzICYmICFleGVjLT5hcmd1bWVudCgzKS5pc051bGwoKSAmJiAhZXhlYy0+
YXJndW1lbnQoMykuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDMpLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7Ci0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAg
ICAgfQotICAgICAgICBlcnJvckNhbGxiYWNrID0gSlNFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMykpLCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotCi0gICAg
aW1wLT5nZXRGaWxlKHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2sp
OwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQotCi1KU1ZhbHVlIEpTRGlyZWN0b3J5RW50
cnk6OmdldERpcmVjdG9yeShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLQotICAgIERpcmVjdG9yeUVudHJ5KiBpbXAg
PSBzdGF0aWNfY2FzdDxEaXJlY3RvcnlFbnRyeSo+KGltcGwoKSk7Ci0gICAgY29uc3QgU3RyaW5n
JiBwYXRoID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhleGVjLCBleGVj
LT5hcmd1bWVudCgwKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKLQotICAgIGludCBhcmdzQ291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7Ci0gICAgaWYgKGFyZ3NDb3VudCA8PSAxKSB7Ci0gICAgICAgIGltcC0+Z2V0RGly
ZWN0b3J5KHBhdGgpOwotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSku
aXNOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgJiYgZXhlYy0+YXJn
dW1lbnQoMSkuaXNPYmplY3QoKSkgewotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+
YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7Ci0gICAgICAgIGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNy
ZWF0ZSgpOwotICAgICAgICBKU1ZhbHVlIGpzQ3JlYXRlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiY3JlYXRlIikpOwotICAgICAgICBmbGFncy0+c2V0Q3JlYXRlKGpzQ3Jl
YXRlLnRvQm9vbGVhbigpKTsKLSAgICAgICAgSlNWYWx1ZSBqc0V4Y2x1c2l2ZSA9IG9iamVjdC0+
Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImV4Y2x1c2l2ZSIpKTsKLSAgICAgICAgZmxhZ3Mt
PnNldEV4Y2x1c2l2ZShqc0V4Y2x1c2l2ZS50b0Jvb2xlYW4oKSk7Ci0gICAgfQotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpID4gMiAmJiAhZXhlYy0+YXJndW1lbnQoMikuaXNOdWxsKCkgJiYgIWV4ZWMt
PmFyZ3VtZW50KDIpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgyKS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOwotICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gSlNFbnRyeUNhbGxiYWNrOjpjcmVhdGUo
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMikpLCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotICAg
IFJlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwotICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPiAzICYmICFleGVjLT5hcmd1bWVudCgzKS5pc051bGwoKSAmJiAhZXhlYy0+
YXJndW1lbnQoMykuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDMpLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7Ci0gICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAg
ICAgfQotICAgICAgICBlcnJvckNhbGxiYWNrID0gSlNFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMykpLCBnbG9iYWxPYmplY3QoKSk7Ci0gICAgfQotCi0gICAg
aW1wLT5nZXREaXJlY3RvcnkocGF0aCwgZmxhZ3MsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ1MmFmOWE2YTBkY2EyNmNjNWVlMDZhMmVi
YTg5ODIzZGExNmZiOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVudHJ5U3luY0N1c3Rv
bS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotCi0jaW5jbHVkZSAiSlNEaXJlY3RvcnlFbnRyeVN5
bmMuaCIKLQotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRW50cnlDYWxs
YmFjay5oIgotI2luY2x1ZGUgIkpTRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTRmlsZUVu
dHJ5U3luYy5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBKU0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+IGdldEZsYWdzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNWYWx1ZSYgYXJndW1lbnQp
Ci17Ci0gICAgaWYgKGFyZ3VtZW50LmlzTnVsbCgpIHx8IGFyZ3VtZW50LmlzVW5kZWZpbmVkKCkg
fHwgIWFyZ3VtZW50LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRy
PFdlYktpdEZsYWdzPiBmbGFnczsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gYXJndW1lbnQuZ2V0
T2JqZWN0KCk7Ci0gICAgZmxhZ3MgPSBXZWJLaXRGbGFnczo6Y3JlYXRlKCk7Ci0gICAgSlNWYWx1
ZSBqc0NyZWF0ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImNyZWF0ZSIp
KTsKLSAgICBmbGFncy0+c2V0Q3JlYXRlKGpzQ3JlYXRlLnRvQm9vbGVhbigpKTsKLSAgICBKU1Zh
bHVlIGpzRXhjbHVzaXZlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZXhj
bHVzaXZlIikpOwotICAgIGZsYWdzLT5zZXRFeGNsdXNpdmUoanNFeGNsdXNpdmUudG9Cb29sZWFu
KCkpOwotICAgIHJldHVybiBmbGFnczsKLX0KLQotSlNWYWx1ZSBKU0RpcmVjdG9yeUVudHJ5U3lu
Yzo6Z2V0RmlsZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jKiBp
bXAgPSBzdGF0aWNfY2FzdDxEaXJlY3RvcnlFbnRyeVN5bmMqPihpbXBsKCkpOwotICAgIGNvbnN0
IFN0cmluZyYgcGF0aCA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzID0gZ2V0RmxhZ3MoZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCB0
aGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5nZXRGaWxlKHBhdGgsIGZsYWdz
LCBlYykpKTsKLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUpTVmFsdWUgSlNEaXJlY3RvcnlFbnRyeVN5bmM6OmdldERpcmVjdG9yeShFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gICAgRGlyZWN0b3J5RW50cnlTeW5jKiBpbXAgPSBzdGF0aWNfY2Fz
dDxEaXJlY3RvcnlFbnRyeVN5bmMqPihpbXBsKCkpOwotICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9
IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0KLSAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzID0gZ2V0RmxhZ3Mo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCB0aGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV1RGOjpnZXRQdHIoaW1wLT5nZXREaXJlY3RvcnkocGF0aCwgZmxhZ3MsIGVjKSkpOwot
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5
RW50cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGly
ZWN0b3J5RW50cnlDdXN0b20uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjAx
ZGM2YjViYzA2NTc1NmNmZDExZGVmMjljNDA2YzhhODViMjRhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4RGlyZWN0b3J5RW50cnkuaCIK
LQotI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLQotI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5Lmgi
Ci0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2lu
Y2x1ZGUgIlY4RW50cnlDYWxsYmFjay5oIgotI2luY2x1ZGUgIlY4RXJyb3JDYWxsYmFjay5oIgot
I2luY2x1ZGUgIlY4UHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RGlyZWN0b3J5Q2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5EaXJlY3RvcnlFbnRyeS5n
ZXREaXJlY3RvcnkiKTsKLSAgICBEaXJlY3RvcnlFbnRyeSogaW1wID0gVjhEaXJlY3RvcnlFbnRy
eTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEp
Ci0gICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLQotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgcGF0aCwgYXJnc1swXSk7Ci0gICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewotICAgICAgICBpbXAtPmdldERpcmVjdG9yeShwYXRo
KTsKLSAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgfQotICAgIFJlZlB0cjxXZWJL
aXRGbGFncz4gZmxhZ3M7Ci0gICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBh
cmdzWzFdLT5Jc09iamVjdCgpKSB7Ci0gICAgICAgIEVYQ0VQVElPTl9CTE9DSyh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+LCBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sx
XSkpOwotICAgICAgICBmbGFncyA9IFdlYktpdEZsYWdzOjpjcmVhdGUoKTsKLSAgICAgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdjhDcmVhdGUgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXco
ImNyZWF0ZSIpKTsKLSAgICAgICAgaWYgKCF2OENyZWF0ZS5Jc0VtcHR5KCkgJiYgIWlzVW5kZWZp
bmVkT3JOdWxsKHY4Q3JlYXRlKSkgewotICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGJvb2ws
IGlzQ3JlYXRlLCB2OENyZWF0ZS0+Qm9vbGVhblZhbHVlKCkpOwotICAgICAgICAgICAgZmxhZ3Mt
PnNldENyZWF0ZShpc0NyZWF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdjhFeGNsdXNpdmUgPSBvYmplY3QtPkdldCh2ODo6U3RyaW5nOjpOZXcoImV4Y2x1c2l2
ZSIpKTsKLSAgICAgICAgaWYgKCF2OEV4Y2x1c2l2ZS5Jc0VtcHR5KCkgJiYgIWlzVW5kZWZpbmVk
T3JOdWxsKHY4RXhjbHVzaXZlKSkgewotICAgICAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGJvb2ws
IGlzRXhjbHVzaXZlLCB2OEV4Y2x1c2l2ZS0+Qm9vbGVhblZhbHVlKCkpOwotICAgICAgICAgICAg
ZmxhZ3MtPnNldEV4Y2x1c2l2ZShpc0V4Y2x1c2l2ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
UmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjazsKLSAgICBpZiAoYXJncy5MZW5n
dGgoKSA+IDIgJiYgIWFyZ3NbMl0tPklzTnVsbCgpICYmICFhcmdzWzJdLT5Jc1VuZGVmaW5lZCgp
KSB7Ci0gICAgICAgIGlmICghYXJnc1syXS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVy
biBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
LSAgICAgICAgc3VjY2Vzc0NhbGxiYWNrID0gVjhFbnRyeUNhbGxiYWNrOjpjcmVhdGUoYXJnc1sy
XSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICB9Ci0gICAgUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2s7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzICYmICFh
cmdzWzNdLT5Jc051bGwoKSAmJiAhYXJnc1szXS0+SXNVbmRlZmluZWQoKSkgewotICAgICAgICBp
ZiAoIWFyZ3NbM10tPklzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgICAgIGVycm9y
Q2FsbGJhY2sgPSBWOEVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNdLCBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwotICAgIH0KLSAgICBpbXAtPmdldERpcmVjdG9yeShwYXRoLCBmbGFn
cywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKLX0KLQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGlyZWN0b3J5RW50cnk6OmdldEZp
bGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygi
RE9NLkRpcmVjdG9yeUVudHJ5LmdldEZpbGUiKTsKLSAgICBEaXJlY3RvcnlFbnRyeSogaW1wID0g
VjhEaXJlY3RvcnlFbnRyeTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0KLSAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCi0gICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENF
UFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgcGF0aCwg
YXJnc1swXSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewotICAgICAgICBpbXAtPmdl
dEZpbGUocGF0aCk7Ci0gICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIH0KLSAgICBS
ZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzOwotICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoYXJn
c1sxXSkgJiYgYXJnc1sxXS0+SXNPYmplY3QoKSkgewotICAgICAgICBFWENFUFRJT05fQkxPQ0so
djg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZ3NbMV0pKTsKLSAgICAgICAgZmxhZ3MgPSBXZWJLaXRGbGFnczo6Y3JlYXRlKCk7Ci0g
ICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4Q3JlYXRlID0gb2JqZWN0LT5HZXQodjg6OlN0
cmluZzo6TmV3KCJjcmVhdGUiKSk7Ci0gICAgICAgIGlmICghdjhDcmVhdGUuSXNFbXB0eSgpICYm
ICFpc1VuZGVmaW5lZE9yTnVsbCh2OENyZWF0ZSkpIHsKLSAgICAgICAgICAgIEVYQ0VQVElPTl9C
TE9DSyhib29sLCBpc0NyZWF0ZSwgdjhDcmVhdGUtPkJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgICAg
ICAgIGZsYWdzLT5zZXRDcmVhdGUoaXNDcmVhdGUpOwotICAgICAgICB9Ci0gICAgICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHY4RXhjbHVzaXZlID0gb2JqZWN0LT5HZXQodjg6OlN0cmluZzo6TmV3
KCJleGNsdXNpdmUiKSk7Ci0gICAgICAgIGlmICghdjhFeGNsdXNpdmUuSXNFbXB0eSgpICYmICFp
c1VuZGVmaW5lZE9yTnVsbCh2OEV4Y2x1c2l2ZSkpIHsKLSAgICAgICAgICAgIEVYQ0VQVElPTl9C
TE9DSyhib29sLCBpc0V4Y2x1c2l2ZSwgdjhFeGNsdXNpdmUtPkJvb2xlYW5WYWx1ZSgpKTsKLSAg
ICAgICAgICAgIGZsYWdzLT5zZXRFeGNsdXNpdmUoaXNFeGNsdXNpdmUpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIFJlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2s7Ci0gICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPiAyICYmICFhcmdzWzJdLT5Jc051bGwoKSAmJiAhYXJnc1syXS0+SXNV
bmRlZmluZWQoKSkgewotICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElz
b2xhdGUoKSk7Ci0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayA9IFY4RW50cnlDYWxsYmFjazo6Y3Jl
YXRlKGFyZ3NbMl0sIGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgfQotICAgIFJl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrOwotICAgIGlmIChhcmdzLkxlbmd0aCgp
ID4gMyAmJiAhYXJnc1szXS0+SXNOdWxsKCkgJiYgIWFyZ3NbM10tPklzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgaWYgKCFhcmdzWzNdLT5Jc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHNl
dERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwotICAg
ICAgICBlcnJvckNhbGxiYWNrID0gVjhFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1szXSwgZ2V0
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICB9Ci0gICAgaW1wLT5nZXRGaWxlKHBhdGgs
IGZsYWdzLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwotfQotCi0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYzRmZmM5ODIzYzQ4MDA1YWJiYWFhODVkZTk0NDYy
NjgwMjk2NDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5RW50cnlTeW5jQ3Vz
dG9tLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlY4RGlyZWN0b3J5RW50cnlTeW5jLmgiCi0KLSNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0KLSNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeVN5bmMuaCIKLSNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhFbnRyeUNh
bGxiYWNrLmgiCi0jaW5jbHVkZSAiVjhFcnJvckNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiVjhGaWxl
RW50cnlTeW5jLmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBib29sIGV4dHJhY3RCb29sZWFuVmFsdWUoY29uc3Qgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiYgb2JqZWN0LCBjb25zdCBjaGFyKiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgewotICAg
IGVjID0gMDsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSA9IG9iamVjdC0+R2V0KHY4
OjpTdHJpbmc6Ok5ldyhuYW1lKSk7Ci0gICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkgJiYgIWlzVW5k
ZWZpbmVkT3JOdWxsKHZhbHVlKSkgewotICAgICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7Ci0gICAg
ICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7Ci0gICAgICAgIGlm
IChibG9jay5IYXNDYXVnaHQoKSkgewotICAgICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
bmF0aXZlVmFsdWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIFBhc3NS
ZWZQdHI8V2ViS2l0RmxhZ3M+IGdldEZsYWdzKGNvbnN0IHY4OjpMb2NhbDx2ODo6VmFsdWU+JiBh
cmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGVjID0gMDsKLSAgICBpZiAoaXNVbmRlZmlu
ZWRPck51bGwoYXJnKSB8fCAhYXJnLT5Jc09iamVjdCgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0OwotICAgIHsKLSAgICAgICAgdjg6OlRy
eUNhdGNoIGJsb2NrOwotICAgICAgICBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KGFyZyk7Ci0gICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkgewotICAgICAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgYm9vbCBpc0NyZWF0ZSA9IGV4dHJhY3RCb29sZWFuVmFsdWUob2JqZWN0
LCAiY3JlYXRlIiwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYm9v
bCBpc0V4Y2x1c2l2ZSA9IGV4dHJhY3RCb29sZWFuVmFsdWUob2JqZWN0LCAiZXhjbHVzaXZlIiwg
ZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZWZQdHI8V2ViS2l0
RmxhZ3M+IGZsYWdzID0gV2ViS2l0RmxhZ3M6OmNyZWF0ZSgpOwotICAgIGZsYWdzLT5zZXRDcmVh
dGUoaXNDcmVhdGUpOwotICAgIGZsYWdzLT5zZXRFeGNsdXNpdmUoaXNFeGNsdXNpdmUpOwotCi0g
ICAgcmV0dXJuIGZsYWdzOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlF
bnRyeVN5bmM6OmdldERpcmVjdG9yeUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Ci17Ci0gICAgSU5DX1NUQVRTKCJET00uRGlyZWN0b3J5RW50cnlTeW5jLmdldERpcmVjdG9yeSIp
OwotICAgIERpcmVjdG9yeUVudHJ5U3luYyogaW1wID0gVjhEaXJlY3RvcnlFbnRyeVN5bmM6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFNU
UklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJhbWV0ZXI8PiwgcGF0aCwg
YXJnc1swXSk7Ci0gICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncyA9IGdldEZsYWdzKGFyZ3Nb
MV0sIGVjKTsKLSAgICBpZiAoVU5MSUtFTFkoZWMpKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgUmVmUHRyPERpcmVjdG9yeUVudHJ5
U3luYz4gcmVzdWx0ID0gaW1wLT5nZXREaXJlY3RvcnkocGF0aCwgZmxhZ3MsIGVjKTsKLSAgICBp
ZiAoVU5MSUtFTFkoZWMpKQotICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdz
LkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOwotfQotCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRy
eVN5bmM6OmdldEZpbGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotewotICAg
IElOQ19TVEFUUygiRE9NLkRpcmVjdG9yeUVudHJ5U3luYy5nZXRGaWxlIik7Ci0gICAgRGlyZWN0
b3J5RW50cnlTeW5jKiBpbXAgPSBWOERpcmVjdG9yeUVudHJ5U3luYzo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCBwYXRoLCBhcmdzWzBdKTsKLSAg
ICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzID0gZ2V0RmxhZ3MoYXJnc1sxXSwgZWMpOwotICAg
IGlmIChVTkxJS0VMWShlYykpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKLSAgICBSZWZQdHI8RmlsZUVudHJ5U3luYz4gcmVzdWx0ID0gaW1w
LT5nZXRGaWxlKHBhdGgsIGZsYWdzLCBlYyk7Ci0gICAgaWYgKFVOTElLRUxZKGVjKSkKLSAgICAg
ICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJl
dHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLX0KLQotCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZWYzOWU5ZjgxNGZlNDMzOThmYjcwMWFmYjk1NmZjNjIxZTI0NGRiLi5hNTNhNmZm
NWZlNTA3ZDMxN2I2ZGNhNjU1Yjk4YjllMzUzYTVjOWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTItMDgtMTYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBE
aXJlY3RvcnlFbnRyeSBzaG91bGQgdXNlIERpY3Rpb25hcnkgcmF0aGVyIHRoYW4gY3VzdG9tIGJp
bmRpbmdzIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk0MjA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBjaGFuZ2VzIG91ciBiZWhhdmlvciBzbGlnaHRseSBpbiB0aGF0IHBhc3Np
bmcgYSBub24tb2JqZWN0CisgICAgICAgIGFzIGEgZmxhZ3MgRGljdGlvbmFyeSB0aHJvd3MgYW4g
ZXhjZXB0aW9uIHJhdGhlciB0aGFuIGJlaW5nIHRyZWF0ZWQgYXMKKyAgICAgICAgYW4gZW1wdHkg
ZGljdGlvbmFyeS4gVGhpcyBuZXcgYmVoYXZpb3IgbWF0Y2hlcyB0aGUgV2ViSURMIHNwZWMgYW5k
CisgICAgICAgIGhvcGVmdWxseSB3b24ndCBjYXVzZSBjb21wYXQgcHJvYmxlbXMuCisKKyAgICAg
ICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmxhZ3MtcGFzc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9mbGFncy1wYXNzaW5nLmpzOgorICAgICAg
ICAocnVuTnVsbFRlc3QpOgorICAgICAgICAocnVuTm9uT2JqZWN0VGVzdCk6CisKIDIwMTItMDgt
MTYgIFNlcmdleSBSb2d1bGVua28gIDxyb2d1bGVua29AZ29vZ2xlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBhZGRlZCBQYWludCBldmVudHMgZm9yIEltYWdlcyB0byBUaW1lbGluZUFn
ZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmxhZ3MtcGFzc2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmxhZ3MtcGFzc2lu
Zy1leHBlY3RlZC50eHQKaW5kZXggNWM4NzU1MjAzMGFjOTk3M2NjODAyYmVjY2FjNDU1NWVkMmIw
Mjc3ZC4uNTY3NDMzOTJmMmJkYTI0MzAzMDVmZDljNTc3YmQwNTYzMjU5MGU4NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZsYWdzLXBhc3NpbmctZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9mbGFncy1wYXNzaW5nLWV4cGVjdGVk
LnR4dApAQCAtNSw4ICs1LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogKiBQYXNzaW5n
IEpTT04gRmxhZ3Mgb2JqZWN0LgogKiBQYXNzaW5nIEpTT04gRmxhZ3Mgb2JqZWN0ICh3aXRoIGV4
Y2x1c2l2ZT10cnVlKS4KLSogUGFzc2luZyBudWxsIGFzIGEgV2ViS2l0RmxhZ3MgcGFyYW1ldGVy
LgotKiBQYXNzaW5nIGEgbnVtYmVyIGFzIGEgV2ViS2l0RmxhZ3MgcGFyYW1ldGVyLgorKiBQYXNz
aW5nIG51bGwgYXMgYSBmbGFncyBwYXJhbWV0ZXIuCisqIFBhc3NpbmcgYSBudW1iZXIgYXMgYSBm
bGFncyBwYXJhbWV0ZXIuCitDYXVnaHQgZXhjZXB0aW9uOiBUeXBlRXJyb3I6IE5vdCBhbiBvYmpl
Y3QuCiBGaW5pc2hlZCBydW5uaW5nIHRlc3RzLgogUEFTUyBleHBlY3RlZENhbGxiYWNrc0NvdW50
IGlzIDEKIFBBU1MgdW5leHBlY3RlZENhbGxiYWNrc0NvdW50IGlzIDAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zY3JpcHQtdGVzdHMvZmxhZ3MtcGFzc2luZy5q
cwppbmRleCA1NWM4MWM2NzM3ZTBiY2MzNzkzMmVkN2U2OTU4ODA5Yzg1NTI3MzNhLi45MmUwYzQ5
NGJlMzY0NTI3MzU3ODhlZjMzMTE3ZGJkOWI2MDg4NDU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vc2NyaXB0LXRlc3RzL2ZsYWdzLXBhc3NpbmcuanMKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NjcmlwdC10ZXN0cy9mbGFncy1wYXNzaW5nLmpzCkBA
IC0zNCwxNyArMzQsMjIgQEAgZnVuY3Rpb24gZXJyb3JDYWxsYmFjayhlcnJvcikgewogCiAvLyBU
ZXN0IGJvZHkgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIGZ1bmN0aW9uIHJ1bk51bGxUZXN0KHYpIHsKLSAgICBkZWJ1ZygiKiBQ
YXNzaW5nIG51bGwgYXMgYSBXZWJLaXRGbGFncyBwYXJhbWV0ZXIuIik7CisgICAgZGVidWcoIiog
UGFzc2luZyBudWxsIGFzIGEgZmxhZ3MgcGFyYW1ldGVyLiIpOwogCiAgICAgLy8gVGhpcyBzaG91
bGQgYmUgb2sgYW5kIHdlIHRyZWF0IGl0IGFzIHtmYWxzZSwgZmFsc2V9IEZsYWdzLgogICAgIGZp
bGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwgbnVsbCwgcnVuTmV4dFRlc3QsIGVy
cm9yQ2FsbGJhY2spOwogfQogCiBmdW5jdGlvbiBydW5Ob25PYmplY3RUZXN0KHYpIHsKLSAgICBk
ZWJ1ZygiKiBQYXNzaW5nIGEgbnVtYmVyIGFzIGEgV2ViS2l0RmxhZ3MgcGFyYW1ldGVyLiIpOwot
Ci0gICAgLy8gVGhpcyBzaG91bGQgYmUgb2sgYW5kIHdlIHRyZWF0IGl0IGFzIHtmYWxzZSwgZmFs
c2V9IEZsYWdzLgotICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwgNywg
cnVuTmV4dFRlc3QsIGVycm9yQ2FsbGJhY2spOworICAgIGRlYnVnKCIqIFBhc3NpbmcgYSBudW1i
ZXIgYXMgYSBmbGFncyBwYXJhbWV0ZXIuIik7CisKKyAgICB0cnkgeworICAgICAgICAvLyBUaGlz
IHNob3VsZCBiZSBub3QgYmUgb2sgYmVjYXVzZSA3IGlzIG5vdCBhbiBvYmplY3QuCisgICAgICAg
IGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxlKHRlc3RGaWxlTmFtZSwgNywgZXJyb3JDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjayk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgZGVidWcoIkNhdWdo
dCBleGNlcHRpb246ICIgKyBleCk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQogfQog
CiBmdW5jdGlvbiBydW5PYmplY3RUZXN0KHYpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>