<?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>127011</bug_id>
          
          <creation_ts>2014-01-14 14:31:18 -0800</creation_ts>
          <short_desc>IDB: create object store support</short_desc>
          <delta_ts>2014-01-16 14:02:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>127012</dependson>
          <blocked>124521</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>968040</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-14 14:31:18 -0800</bug_when>
    <thetext>IDB: create object store support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968043</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-14 14:33:07 -0800</bug_when>
    <thetext>In radar as &lt;rdar://problem/15779639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968048</commentid>
    <comment_count>2</comment_count>
      <attachid>221204</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-14 14:39:13 -0800</bug_when>
    <thetext>Created attachment 221204
Patch v1

This patch does most of the work.

It leaves out the (currently) nasty bit of (de)serializing the IDBKeyPath to and from disk, as we don&apos;t yet have a good solution to that.  Bug 127012 tracks that as a separate task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968050</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-14 14:40:36 -0800</bug_when>
    <thetext>Attachment 221204 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/WebCore/Modules/indexeddb/IDBDatabaseMetadata.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndexMetadata.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStoreMetadata.h&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/platform/CrossThreadCopier.cpp&apos;, u&apos;Source/WebCore/platform/CrossThreadCopier.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.messages.in&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabaseBackingStore.h&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.h&apos;, u&apos;Source/WebKit2/Scripts/webkit2/messages.py&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.h&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.messages.in&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 24 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>968143</commentid>
    <comment_count>4</comment_count>
      <attachid>221204</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-14 18:52:46 -0800</bug_when>
    <thetext>Comment on attachment 221204
Patch v1

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

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:185
&gt; +

No need for this newline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968174</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-14 22:28:14 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162047

But that does not close out this bug yet.  A small followup will be required either along with https://bugs.webkit.org/show_bug.cgi?id=127012 (blocking relationship already set) or as a separate patch here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968910</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 13:41:45 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162148 makes this work for reals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968927</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-16 14:02:03 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162151 as a build fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221204</attachid>
            <date>2014-01-14 14:39:13 -0800</date>
            <delta_ts>2014-01-14 18:52:46 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>49377</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MTk1N2ViLi5hZjVmYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTQtMDEtMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIElEQjogY3JlYXRlIG9iamVjdCBzdG9yZSBzdXBwb3J0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xNTc3OTYzOT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjcwMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTcGxpdCB0aGUgMyBvYmplY3RzIGRlY2xhcmVkIGluIElEQkRhdGFiYXNlTWV0YWRhdGEgaW50
byB0aGVpciBvd24gaGVhZGVyIGZpbGVzOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlTWV0YWRhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eE1ldGFkYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhOjpJREJJbmRl
eE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZU1l
dGFkYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhKToKKworICAgICAgICBBZGQgY3Jvc3MgdGhyZWFkIGNvcHlpbmcg
Zm9yIElEQkRhdGFiYXNlTWV0YWRhdGE6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YT46OmNvcHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YT46OmNvcHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MTQtMDEtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTT1VQXSBTb3VwTmV0d29ya1Nlc3Npb246OnNldEFjY2VwdExhbmd1YWdlcyBzaG91
bGQgcmVjZWl2ZSBhIGNvbnN0IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VNZXRhZGF0YS5oCmluZGV4IGRkYTUzYjkuLjc1
NzE3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZU1ldGFkYXRhLmgKQEAgLTI5LDU5ICsyOSwxMiBAQAogI2lmbmRlZiBJREJEYXRh
YmFzZU1ldGFkYXRhX2gKICNkZWZpbmUgSURCRGF0YWJhc2VNZXRhZGF0YV9oCiAKLSNpbmNsdWRl
ICJJREJLZXlQYXRoLmgiCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oIgogCiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Ry
dWN0IElEQkluZGV4TWV0YWRhdGEgewotICAgIElEQkluZGV4TWV0YWRhdGEoKSB7IH0KLSAgICBJ
REJJbmRleE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKLSAgICAgICAg
OiBuYW1lKG5hbWUpCi0gICAgICAgICwgaWQoaWQpCi0gICAgICAgICwga2V5UGF0aChrZXlQYXRo
KQotICAgICAgICAsIHVuaXF1ZSh1bmlxdWUpCi0gICAgICAgICwgbXVsdGlFbnRyeShtdWx0aUVu
dHJ5KSB7IH0KLSAgICBTdHJpbmcgbmFtZTsKLSAgICBpbnQ2NF90IGlkOwotICAgIElEQktleVBh
dGgga2V5UGF0aDsKLSAgICBib29sIHVuaXF1ZTsKLSAgICBib29sIG11bHRpRW50cnk7Ci0KLSAg
ICBJREJJbmRleE1ldGFkYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotCi0gICAgc3RhdGljIGNv
bnN0IGludDY0X3QgSW52YWxpZElkID0gLTE7Ci19OwotCi1zdHJ1Y3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSB7Ci0gICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSgpIHsgfQotICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QgbWF4SW5kZXhJZCkK
LSAgICAgICAgOiBuYW1lKG5hbWUpCi0gICAgICAgICwgaWQoaWQpCi0gICAgICAgICwga2V5UGF0
aChrZXlQYXRoKQotICAgICAgICAsIGF1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkKLSAgICAg
ICAgLCBtYXhJbmRleElkKG1heEluZGV4SWQpCi0gICAgewotICAgIH0KLSAgICBTdHJpbmcgbmFt
ZTsKLSAgICBpbnQ2NF90IGlkOwotICAgIElEQktleVBhdGgga2V5UGF0aDsKLSAgICBib29sIGF1
dG9JbmNyZW1lbnQ7Ci0gICAgaW50NjRfdCBtYXhJbmRleElkOwotCi0gICAgc3RhdGljIGNvbnN0
IGludDY0X3QgSW52YWxpZElkID0gLTE7Ci0KLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwg
SURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7Ci0gICAgSW5kZXhNYXAgaW5kZXhlczsKLQotICAg
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci19OwotCiBzdHJ1
Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG9ubHkg
aGVyZSB0byBzdXBwb3J0IHRoZSBMZXZlbERCIGJhY2tlbmQgd2hpY2ggaW5jb3JyZWN0bHkgaGFu
ZGxlcyB2ZXJzaW9uaW5nLgpAQCAtMTAwLDggKzUzLDYgQEAgc3RydWN0IElEQkRhdGFiYXNlTWV0
YWRhdGEgewogICAgICAgICBEZWZhdWx0SW50VmVyc2lvbiA9IDAKICAgICB9OwogCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0b3Jl
TWFwOwotCiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSgpCiAgICAgICAgIDogaWQoMCkKICAgICAg
ICAgLCB2ZXJzaW9uKDApCkBAIC0xMjIsMTMgKzczLDEzIEBAIHN0cnVjdCBJREJEYXRhYmFzZU1l
dGFkYXRhIHsKICAgICB1aW50NjRfdCB2ZXJzaW9uOwogICAgIGludDY0X3QgbWF4T2JqZWN0U3Rv
cmVJZDsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhPiBPYmplY3RTdG9yZU1hcDsKICAgICBPYmplY3RTdG9yZU1hcCBvYmplY3RTdG9yZXM7CiAK
ICAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKIAotfQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCi0KICNlbmRpZiAvLyBJREJEYXRhYmFzZU1ldGFkYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4TWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4TWV0YWRhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjRiZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhNZXRhZGF0YS5oCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJREJJbmRleE1ldGFkYXRhX2gKKyNkZWZpbmUgSURCSW5kZXhNZXRh
ZGF0YV9oCisKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJREJJbmRleE1ldGFk
YXRhIHsKKyAgICBJREJJbmRleE1ldGFkYXRhKCkKKyAgICB7CisgICAgfQorCisgICAgSURCSW5k
ZXhNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDogbmFt
ZShuYW1lKQorICAgICAgICAsIGlkKGlkKQorICAgICAgICAsIGtleVBhdGgoa2V5UGF0aCkKKyAg
ICAgICAgLCB1bmlxdWUodW5pcXVlKQorICAgICAgICAsIG11bHRpRW50cnkobXVsdGlFbnRyeSkK
KyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIG5hbWU7CisgICAgaW50NjRfdCBpZDsKKyAgICBJ
REJLZXlQYXRoIGtleVBhdGg7CisgICAgYm9vbCB1bmlxdWU7CisgICAgYm9vbCBtdWx0aUVudHJ5
OworCisgICAgSURCSW5kZXhNZXRhZGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKKworICAgIHN0
YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IC0xOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8g
SURCSW5kZXhNZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZU1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYTE1MDBhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlTWV0YWRhdGEuaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBH
T09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSURCT2JqZWN0U3RvcmVNZXRhZGF0YV9oCisjZGVmaW5lIElEQk9iamVj
dFN0b3JlTWV0YWRhdGFfaAorCisjaW5jbHVkZSAiSURCSW5kZXhNZXRhZGF0YS5oIgorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgeworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKQor
ICAgIHsKKyAgICB9CisKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCBpZCwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50LCBpbnQ2NF90IG1heEluZGV4SWQpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAg
ICAsIGlkKGlkKQorICAgICAgICAsIGtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCBhdXRvSW5j
cmVtZW50KGF1dG9JbmNyZW1lbnQpCisgICAgICAgICwgbWF4SW5kZXhJZChtYXhJbmRleElkKQor
ICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBpbnQ2NF90IGlkOworICAgIElE
QktleVBhdGgga2V5UGF0aDsKKyAgICBib29sIGF1dG9JbmNyZW1lbnQ7CisgICAgaW50NjRfdCBt
YXhJbmRleElkOworCisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gLTE7CisK
KyAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwgSURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7
CisgICAgSW5kZXhNYXAgaW5kZXhlczsKKworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJPYmplY3RTdG9yZU1l
dGFkYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNTIzZjM4Yi4uOWNlZGQ3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTgyLDYgKzgyLDggQEAgX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50
NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJkTlMxXzEwUGFzc1JlZlB0cklOU185RE8K
IF9fWk43V2ViQ29yZTEwUGFzdGVib2FyZDE0d3JpdGVQbGFpblRleHRFUktOM1dURjZTdHJpbmdF
TlMwXzE4U21hcnRSZXBsYWNlT3B0aW9uRQogX19aTjdXZWJDb3JlMTBSZW5kZXJWaWV3MTBjb21w
b3NpdG9yRXYKIF9fWk43V2ViQ29yZTEwUmVuZGVyVmlldzdoaXRUZXN0RVJLTlNfMTRIaXRUZXN0
UmVxdWVzdEVSTlNfMTNIaXRUZXN0UmVzdWx0RQorX19aTjdXZWJDb3JlMTVTUUxpdGVTdGF0ZW1l
bnQxM2dldENvbHVtbkJsb2JFaVJpCitfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDE0Z2V0
Q29sdW1uSW50NjRFaQogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MTZzZXRQYXJlbnRWaXNpYmxl
RWIKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzE3c2V0VXNlRml4ZWRMYXlvdXRFYgogX19aTjdX
ZWJDb3JlMTBTY3JvbGxWaWV3MThzZXRGaXhlZExheW91dFNpemVFUktOU183SW50U2l6ZUUKQEAg
LTU5NSw2ICs1OTcsOCBAQCBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDIyaXNDb2x1bW5E
ZWNsYXJlZEFzQmxvYkVpCiBfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDRzdGVwRXYKIF9f
Wk43V2ViQ29yZTE1U1FMaXRlU3RhdGVtZW50NXJlc2V0RXYKIF9fWk43V2ViQ29yZTE1U1FMaXRl
U3RhdGVtZW50N2JpbmRJbnRFaWkKK19fWk43V2ViQ29yZTE1U1FMaXRlU3RhdGVtZW50OGJpbmRC
bG9iRWlQS3ZpCitfX1pON1dlYkNvcmUxNVNRTGl0ZVN0YXRlbWVudDliaW5kSW50NjRFaXgKIF9f
Wk43V2ViQ29yZTE1U1FMaXRlU3RhdGVtZW50N3ByZXBhcmVFdgogX19aTjdXZWJDb3JlMTVTUUxp
dGVTdGF0ZW1lbnQ4YmluZEJsb2JFaVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTVTUUxp
dGVTdGF0ZW1lbnQ4YmluZFRleHRFaVJLTjNXVEY2U3RyaW5nRQpAQCAtMjk3MSw1ICsyOTc1LDYg
QEAgX19aTjdXZWJDb3JlMTBJREJLZXlQYXRoQzFFUktOM1dURjZWZWN0b3JJTlMxXzZTdHJpbmdF
TG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0UKIF9fWk43V2ViQ29yZTE4SURCRGF0YWJhc2VCYWNr
ZW5kMTRvcGVuQ29ubmVjdGlvbkVOM1dURjEwUGFzc1JlZlB0cklOU18xMklEQkNhbGxiYWNrc0VF
RU5TMl9JTlNfMjBJREJEYXRhYmFzZUNhbGxiYWNrc0VFRXh5CiBfX1pON1dlYkNvcmUxOElEQkRh
dGFiYXNlQmFja2VuZDZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfUE5TXzI2SURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2VFUk5TXzE5SURCU2VydmVyQ29ubmVjdGlvbkUKIF9fWk43V2ViQ29yZTE4
SURCRGF0YWJhc2VCYWNrZW5kRDFFdgorX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJh
c2VJTGIwRUxiMEVOU18yMklEQk9iamVjdFN0b3JlTWV0YWRhdGFFRTRjb3B5RVJLUzFfCiBfX1pO
N1dlYkNvcmUyMUNyb3NzVGhyZWFkQ29waWVyQmFzZUlMYjBFTGIwRU5TXzlJbmRleGVkREIxNVRy
YW5zYWN0aW9uTW9kZUVFNGNvcHlFUktTMl8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVkYzkxOTMuLjk5NzI2YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE4NzksNiArMTg3OSw4IEBACiAJCTUxQUJBRTFCMTAzQzE4RkYwMDhDNTI2MCAvKiBT
b2NrZXRTdHJlYW1FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBQkFFMUExMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmgg
Ki87IH07CiAJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFD
MTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGUuaCAqLzsgfTsKIAkJNTFBQkFF
MUYxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQUJBRTFEMTAzQzE5MTMw
MDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgKi87IH07CisJCTUxQUJCNUI4
MTg2RDBFRDEwMDgzOTFBMSAvKiBJREJJbmRleE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQjVCNjE4NkQwRUQxMDA4MzkxQTEgLyog
SURCSW5kZXhNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTUxQUJCNUI5MTg2RDBFRDEwMDgzOTFBMSAvKiBJREJPYmplY3RTdG9yZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUFCQjVCNzE4NkQwRUQxMDA4MzkxQTEgLyogSURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQUJGNjREMTYz
OTJFMjgwMDEzMkE3QSAvKiBMb2FkZXJTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCRjY0QzE2MzkyRTI4MDAxMzJBN0EgLyogTG9h
ZGVyU3RyYXRlZ3kuY3BwICovOyB9OwogCQk1MUFGNTAzNjE2RjEwMEY2MDA5NUIyRTggLyogUmVz
b3VyY2VMb2FkZXJUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFBRjUwMzUxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUIw
N0E0NDE4MjMyNDhCMDBBQThEMUEgLyogSURCUGVuZGluZ0RlbGV0ZUNhbGwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjA3QTQzMTgyMzI0OEIwMEFB
OEQxQSAvKiBJREJQZW5kaW5nRGVsZXRlQ2FsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04ODMxLDYgKzg4MzMsOCBAQAogCQk1MUFCQUUxQTEw
M0MxOEZGMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8q
IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFBQkI1QjYxODZEMEVEMTAwODM5MUExIC8qIElEQkluZGV4TWV0YWRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCSW5kZXhNZXRhZGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUFCQjVCNzE4NkQwRUQxMDA4MzkxQTEgLyog
SURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJREJPYmplY3RTdG9yZU1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxQUJGNjRDMTYzOTJFMjgwMDEzMkE3QSAvKiBMb2FkZXJTdHJhdGVneS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkZXJTdHJhdGVneS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQUY1MDM1MTZGMTAwRjYwMDk1QjJFOCAvKiBSZXNvdXJj
ZUxvYWRlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNl
TG9hZGVyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCMDdBNDMxODIz
MjQ4QjAwQUE4RDFBIC8qIElEQlBlbmRpbmdEZWxldGVDYWxsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQlBlbmRpbmdEZWxldGVDYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNzY4Nyw2ICsxNzY5MSw3IEBACiAJCQkJNTFENzE5OEUxODExMDZFMDAw
MTZEQzUxIC8qIElEQkluZGV4LmNwcCAqLywKIAkJCQk1MUQ3MTk4RjE4MTEwNkUwMDAxNkRDNTEg
LyogSURCSW5kZXguaCAqLywKIAkJCQk1MUQ3MTk5MDE4MTEwNkUwMDAxNkRDNTEgLyogSURCSW5k
ZXguaWRsICovLAorCQkJCTUxQUJCNUI2MTg2RDBFRDEwMDgzOTFBMSAvKiBJREJJbmRleE1ldGFk
YXRhLmggKi8sCiAJCQkJNTFENzE5OTExODExMDZFMDAwMTZEQzUxIC8qIElEQktleS5jcHAgKi8s
CiAJCQkJNTFENzE5OTIxODExMDZFMDAwMTZEQzUxIC8qIElEQktleS5oICovLAogCQkJCTUxRDcx
OTkzMTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXlQYXRoLmNwcCAqLywKQEAgLTE3Njk3LDYgKzE3
NzAyLDcgQEAKIAkJCQk1MUQ3MTk5OTE4MTEwNkUwMDAxNkRDNTEgLyogSURCT2JqZWN0U3RvcmUu
Y3BwICovLAogCQkJCTUxRDcxOTlBMTgxMTA2RTAwMDE2REM1MSAvKiBJREJPYmplY3RTdG9yZS5o
ICovLAogCQkJCTUxRDcxOTlCMTgxMTA2RTAwMDE2REM1MSAvKiBJREJPYmplY3RTdG9yZS5pZGwg
Ki8sCisJCQkJNTFBQkI1QjcxODZEMEVEMTAwODM5MUExIC8qIElEQk9iamVjdFN0b3JlTWV0YWRh
dGEuaCAqLywKIAkJCQk1MUQ3MTk5QzE4MTEwNkUwMDAxNkRDNTEgLyogSURCT3BlbkRCUmVxdWVz
dC5jcHAgKi8sCiAJCQkJNTFENzE5OUQxODExMDZFMDAwMTZEQzUxIC8qIElEQk9wZW5EQlJlcXVl
c3QuaCAqLywKIAkJCQk1MUQ3MTk5RTE4MTEwNkUwMDAxNkRDNTEgLyogSURCT3BlbkRCUmVxdWVz
dC5pZGwgKi8sCkBAIC0yMzY4Niw2ICsyMzY5Miw3IEBACiAJCQkJRkM5QTBGNzUxNjQwOTRDRjAw
M0Q2QjhEIC8qIERPTVdpbmRvd0NTUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGQTJENzgxNTIx
MzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdCMzhFMjcxNTFDNDI3MTAwNDYyMkU5IC8qIERPTVdpbmRvd05vdGlmaWNhdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxQUJCNUI5MTg2RDBFRDEwMDgzOTFBMSAvKiBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0QyQUQwNDE0QjgyM0E2MDA5M0RGMzIg
LyogRE9NV2luZG93UHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NzlCRjBFMTg0NTMx
NjgwMDBCNkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTg5RjYwQjExMTU3RjY4NkUwMDc1RTE1NyAvKiBET01XaW5kb3dRdW90YS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNDI1Nyw2ICsyNDI2NCw3IEBACiAJCQkJMTRDRjc4QTYwOUY1OENEODAw
RUIzNjY1IC8qIEpTQ1NTVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RDA1RkFDMEEyM0Iz
MEYwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3NzhC
ODAxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxQUJCNUI4MTg2RDBFRDEwMDgzOTFBMSAvKiBJREJJbmRleE1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMTBCOTM3QzBCNzNDMDBBMDAzRUQ4OTAgLyogSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBK
U05hdmlnYXRvck1lZGlhU3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU4MkY5MDBDQUFG
QTlEMDAyMjM3QUUgLyogSlNEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXggMDQzZWQwZi4uMGFhZWE3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApA
QCAtOTMsNiArOTMsMTYgQEAgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURC
RGF0YWJhc2VNZXRhZGF0YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXIKICAgICByZXR1cm4gbWV0
YWRhdGEuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKK0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIElEQkluZGV4TWV0YWRhdGE+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIElEQkluZGV4TWV0YWRhdGE+Ojpjb3B5KGNvbnN0IElEQkluZGV4TWV0YWRhdGEm
IG1ldGFkYXRhKQoreworICAgIHJldHVybiBtZXRhZGF0YS5pc29sYXRlZENvcHkoKTsKK30KKwor
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YT46OmNvcHkoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEp
Cit7CisgICAgcmV0dXJuIG1ldGFkYXRhLmlzb2xhdGVkQ29weSgpOworfQorCiAjZW5kaWYKIAog
Ly8gVGVzdCBDcm9zc1RocmVhZENvcGllciB1c2luZyBDT01QSUxFX0FTU0VSVC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDBmYjA2OWMuLjU5ZDBh
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAt
MTY2LDYgKzE2NiwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSURC
RGF0YWJhc2VNZXRhZGF0YSBUeXBlOwogICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmKTsKICAgICB9OworCisgICAgc3RydWN0IElEQkluZGV4TWV0YWRh
dGE7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBm
YWxzZSwgSURCSW5kZXhNZXRhZGF0YT4geworICAgICAgICB0eXBlZGVmIElEQkluZGV4TWV0YWRh
dGEgVHlwZTsKKyAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBJREJJbmRleE1ldGFkYXRh
Jik7CisgICAgfTsKKworICAgIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOworICAgIHRl
bXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE+IHsKKyAgICAgICAgdHlwZWRlZiBJREJPYmplY3RTdG9yZU1ldGFk
YXRhIFR5cGU7CisgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYpOworICAgIH07CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYzc4MGUyNS4uMWY5MTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBA
CisyMDE0LTAxLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJREI6IGNyZWF0ZSBvYmplY3Qgc3RvcmUgc3VwcG9ydAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTU3Nzk2Mzk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI3MDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG1lc3NhZ2luZy9jYWxsYmFjayBpbmZyYXN0cnVjdHVyZSBmb3IgY3JlYXRpbmcgb2JqZWN0
IHN0b3JlczoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmg6CisgICAgICAgICog
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQlNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlckNvbm5lY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkQ29tcGxldGVCb29sUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisKKyAgICAg
ICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0
b3JlLmg6CisKKyAgICAgICAgQWRkIHNlcmlhbGl6YXRpb24gaGVscGVycyB0byBzYXZlL3Jlc3Rv
cmUgYW4gSURCS2V5UGF0aCB0by9mcm9tIGRpc2s6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VyaWFs
aXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OmRlc2VyaWFsaXplSURCS2V5UGF0aCk6
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmg6
CisKKyAgICAgICAgQWRkIG9iamVjdCBzdG9yZSBtZXRhZGF0YSB0byB0aGUgc2NoZW1hLCBhbmQg
c2F2ZS9yZXN0b3JlIHRoZSBtZXRhZGF0YToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVh
dGVBbmRQb3B1bGF0ZUluaXRpYWxNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlE
QkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpleHRyYWN0RXhpc3RpbmdNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxp
dGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaDoKKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKHN0cnVjdF9vcl9jbGFzcyk6Cisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE0LTAxLTE0
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBUZXN0IC93ZWJraXQyL1dlYktpdFdlYkNvbnRleHQvbGFuZ3VhZ2VzIGNyYXNoZXMgd2l0
aCBuZXR3b3JrIHByb2Nlc3MgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNz
SURCQ29ubmVjdGlvbi5jcHAKaW5kZXggZGJkOWUwMC4uOTY5OWI2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCkBAIC0xNTUsNiArMTU1LDE3IEBA
IHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9u
KHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50CiAgICAgfSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBp
bnQ2NF90IHRyYW5zYWN0aW9uSUQsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0
YWRhdGEpCit7CisgICAgQVNTRVJUKG1fdW5pcXVlSURCRGF0YWJhc2UpOworCisgICAgTE9HKElE
QiwgIkRhdGFiYXNlUHJvY2VzcyBjcmVhdGVPYmplY3RTdG9yZSByZXF1ZXN0IElEICVsbHUsIG9i
amVjdCBzdG9yZSBuYW1lICclcyciLCByZXF1ZXN0SUQsIG1ldGFkYXRhLm5hbWUudXRmOCgpLmRh
dGEoKSk7CisgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rp
b24odGhpcyk7CisgICAgbV91bmlxdWVJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUoSURC
VHJhbnNhY3Rpb25JZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgbWV0YWRhdGEsIFtj
b25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgeworICAgICAgICBjb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRDcmVhdGVPYmplY3RT
dG9yZShyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICB9KTsKK30KKwogSVBDOjpDb25uZWN0aW9u
KiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
CiB7CiAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaAppbmRleCA2NDc1NGVjLi44ZDM3YzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaApAQCAtNjksNyAr
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRUcmFuc2FjdGlvbih1aW50NjRfdCByZXF1
ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCk7CiAgICAgdm9pZCByb2xsYmFja1RyYW5zYWN0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklEKTsKICAgICB2b2lk
IGNoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNh
Y3Rpb25JRCwgdWludDY0X3QgbmV3VmVyc2lvbik7Ci0KKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZU1ldGFkYXRhKTsKIAogICAgIFJlZjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGRhNmU1MjQuLjYzYTIwMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTMzLDYgKzMzLDcgQEAgbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbiBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgUm9sbGJhY2tUcmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0
SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCkKICAgICAKICAgICBDaGFuZ2VEYXRhYmFzZVZlcnNp
b24odWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIHVpbnQ2NF90IG5l
d1ZlcnNpb24pCisgICAgQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2
NF90IHRyYW5zYWN0aW9uSUQsIFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0
U3RvcmVNZXRhZGF0YSkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAm
JiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0lEQlNlcmlhbGl6YXRpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNzI5ZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0lEQlNlcmlhbGl6YXRp
b24uY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklEQlNlcmlhbGl6YXRpb24uaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5UGF0aC5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
dWludDhfdD4+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYp
Cit7CisgICAgLy8gRklYTUU6IE9uY2Ugd2UgaGF2ZSBhIHNlcmlhbGl6YXRpb24gc29sdXRpb24g
YXBwcm9wcmlhdGUgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZSB0byBkaXNrLCB1c2luZyB0aGF0IGhl
cmUuCisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OklEQktleVBhdGg+IGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90Kiwgc2l6ZV90
KQoreworICAgIC8vIEZJWE1FOiBPbmNlIHdlIGhhdmUgYSBzZXJpYWxpemF0aW9uIHNvbHV0aW9u
IGFwcHJvcHJpYXRlIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UgdG8gZGlzaywgdXNpbmcgdGhhdCBo
ZXJlLgorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJT
ZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0lEQlNlcmlhbGl6YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
ZjlhZDA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSURCU2VyaWFsaXphdGlvbl9oCisjZGVmaW5lIElEQlNlcmlhbGl6YXRpb25f
aAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElEQktleVBhdGg7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVpbnQ4X3Q+PiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKK3N0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJREJLZXlQYXRoPiBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhf
dCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VyaWFs
aXphdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJv
Y2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGFlMTZmOWQuLjM4YzBk
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0zMTMsMTIgKzMxMyw1MCBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCVHJh
bnNhY3Rpb25JZGVudGlmaWVyJiBpZAogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDaGFu
Z2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiB7Cisg
ICAgZGlkQ29tcGxldGVCb29sUmVxdWVzdChyZXF1ZXN0SUQsIHN1Y2Nlc3MpOworfQorCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgc3VjY2VzcykKK3sKKyAgICBkaWRDb21wbGV0ZUJvb2xSZXF1ZXN0KHJlcXVlc3RJ
RCwgc3VjY2Vzcyk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlQm9v
bFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCit7CiAgICAgUmVmUHRy
PEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ0RhdGFiYXNlVGFza3MudGFrZShyZXF1
ZXN0SUQpOwogICAgIEFTU0VSVChyZXF1ZXN0KTsKIAogICAgIHJlcXVlc3QtPmNvbXBsZXRlUmVx
dWVzdChzdWNjZXNzKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgc3RkOjpmdW5jdGlvbjx2
b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmICghbV9hY2NlcHRpbmdOZXdSZXF1ZXN0cykgeworICAgICAgICBzdWNjZXNz
Q2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFt
X21ldGFkYXRhLT5vYmplY3RTdG9yZXMuY29udGFpbnMobWV0YWRhdGEuaWQpKTsKKyAgICBtX21l
dGFkYXRhLT5vYmplY3RTdG9yZXMuc2V0KG1ldGFkYXRhLmlkLCBtZXRhZGF0YSk7CisgICAgaW50
NjRfdCBhZGRlZE9iamVjdFN0b3JlSUQgPSBtZXRhZGF0YS5pZDsKKworICAgIFJlZlB0cjxBc3lu
Y1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoW3RoaXMs
IGFkZGVkT2JqZWN0U3RvcmVJRCwgc3VjY2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVz
LnJlbW92ZShhZGRlZE9iamVjdFN0b3JlSUQpOworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soc3Vj
Y2Vzcyk7CisgICAgfSwgW3RoaXMsIGFkZGVkT2JqZWN0U3RvcmVJRCwgc3VjY2Vzc0NhbGxiYWNr
XSgpIHsKKyAgICAgICAgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLnJlbW92ZShhZGRlZE9iamVj
dFN0b3JlSUQpOworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOworICAgIH0pOworCisg
ICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgbV9wZW5k
aW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CisKKyAg
ICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGlkZW50aWZp
ZXIsIG1ldGFkYXRhKSk7Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5n
U3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNvcmU6OkluZGV4
ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CkBAIC0zNzksNiArNDE3LDE2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURh
dGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwKICAgICBwb3N0
TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbiwgcmVxdWVzdElELCBzdWNjZXNzKSk7CiB9CiAKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAgICBi
b29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUoaWRlbnRpZmll
ciwgbWV0YWRhdGEpOworCisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVPYmplY3RTdG9yZSwgcmVxdWVzdElE
LCBzdWNjZXNzKSk7Cit9CisKIFN0cmluZyBVbmlxdWVJREJEYXRhYmFzZTo6YWJzb2x1dGVEYXRh
YmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBhMmE1N2NkLi5kNjc5ZDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJ
REJEYXRhYmFzZS5oCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJvbGxiYWNr
VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgc3RkOjpmdW5jdGlv
bjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwogCiAgICAgdm9pZCBjaGFuZ2VEYXRhYmFz
ZVZlcnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgdWludDY0X3QgbmV3VmVy
c2lvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZv
aWQgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgY29u
c3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChi
b29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFz
ZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKQEAgLTExMyw2ICsxMTQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25z
dCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImKTsKIAogICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VW
ZXJzaW9uSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2Fj
dGlvbklkZW50aWZpZXImLCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKKyAgICB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRh
Jik7CiAKICAgICB2b2lkIHNodXRkb3duQmFja2luZ1N0b3JlKCk7CiAKQEAgLTEyMSw3ICsxMjMs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkT3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0
YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJiwgYm9vbCBzdWNjZXNzKTsKICAg
ICB2b2lkIGRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURCVHJhbnNhY3Rp
b25JZGVudGlmaWVyJiwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZENoYW5nZURhdGFiYXNl
VmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CisgICAgdm9pZCBkaWRD
cmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAgICAg
dm9pZCBkaWRTaHV0ZG93bkJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgZGlkQ29tcGxldGVCb29s
UmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAKICAgICBib29sIG1f
YWNjZXB0aW5nTmV3UmVxdWVzdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmUuaAppbmRleCBkZTBjNjYxLi4yNWZhMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9V
bmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOworc3RydWN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTIsNiArNTMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3Qg
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGNoYW5n
ZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCB1aW50NjRf
dCBuZXdWZXJzaW9uKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlTWV0YWRhdGEmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlLmNwcAppbmRleCAxOTAzNzU4Li4yMzVkNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3Bw
CkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5B
QkxFKERBVEFCQVNFX1BST0NFU1MpCiAKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKKyNp
bmNsdWRlICJJREJTZXJpYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCVHJhbnNhY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0lEQkRhdGFiYXNlTWV0YWRhdGEuaD4KQEAgLTc1LDYgKzc3LDE4IEBAIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhPiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmICghbV9z
cWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBPYmplY3RTdG9yZUluZm8gKGlk
IElOVEVHRVIgUFJJTUFSWSBLRVkgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04g
Q09ORkxJQ1QgRkFJTCwgbmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVF
IE9OIENPTkZMSUNUIEZBSUwsIGtleVBhdGggQkxPQiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlM
LCBhdXRvSW5jIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgbWF4SW5kZXhJRCBJ
TlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBPYmplY3RTdG9yZUluZm8gdGFibGUgaW4gZGF0YWJhc2UgKCVp
KSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFU
RSBUQUJMRSBJbmRleEluZm8gKGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgTk9UIE5VTEwgT04gQ09O
RkxJQ1QgRkFJTCwgbmFtZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9O
IENPTkZMSUNUIEZBSUwsIG9iamVjdFN0b3JlSUQgSU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMLCBrZXlQYXRoIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwgaXNVbmlxdWUg
SU5URUdFUiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMLCBtdWx0aUVudHJ5IElOVEVHRVIgTk9U
IE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgY3JlYXRlIEluZGV4SW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBt
X3NxbGl0ZURCID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAg
ICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCBBU0NJSUxpdGVy
YWwoIklOU0VSVCBJTlRPIElEQkRhdGFiYXNlSW5mbyBWQUxVRVMgKCdNZXRhZGF0YVZlcnNpb24n
LCA/KTsiKSk7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rCkBAIC0x
MDgsMTAgKzEyMiwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRh
ZGF0YT4gVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdAogICAgICAgICB9CiAgICAg
fQogCisgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChBU0NJSUxpdGVyYWwoIklO
U0VSVCBJTlRPIElEQkRhdGFiYXNlSW5mbyBWQUxVRVMgKCdNYXhPYmplY3RTdG9yZUlEJywgMSk7
IikpKSB7CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGluc2VydCBkZWZhdWx0IHZlcnNp
b24gaW50byBJREJEYXRhYmFzZUluZm8gdGFibGUgKCVpKSAtICVzIiwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgbV9zcWxpdGVE
QiA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIC8vIFRo
aXMgaW5pdGlhbCBtZXRhZGF0YSBtYXRjaGVzIHRoZSBkZWZhdWx0IHZhbHVlcyB3ZSBqdXN0IHB1
dCBpbnRvIHRoZSBtZXRhZGF0YSBkYXRhYmFzZS4KICAgICBhdXRvIG1ldGFkYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxJREJEYXRhYmFzZU1ldGFkYXRhPigpOwogICAgIG1ldGFkYXRhLT5uYW1lID0g
bV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpOwogICAgIG1ldGFkYXRhLT52ZXJzaW9uID0gMDsK
KyAgICBtZXRhZGF0YS0+bWF4T2JqZWN0U3RvcmVJZCA9IDE7CiAKICAgICByZXR1cm4gbWV0YWRh
dGE7CiB9CkBAIC0xNTQsNyArMTc1LDQzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZU1l
dGFkYXRhPiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6ZXh0cmFjCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICAvLyBGSVhNRTogT25jZSB3ZSBzYXZlIE9iamVjdFN0b3JlcyBh
bmQgaW5kZXhlcyB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlaXIgbWV0YWRhdGEsIGFsc28uCisgICAg
eworICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCBBU0NJSUxpdGVyYWwo
IlNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYywgbWF4SW5kZXhJRCBGUk9NIE9iamVj
dFN0b3JlSW5mbzsiKSk7CisgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9r
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaW50IHJlc3VsdCA9IHNx
bC5zdGVwKCk7CisgICAgICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KSB7CisKKyAg
ICAgICAgICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGE7CisgICAgICAgICAgICBt
ZXRhZGF0YS5pZCA9IHNxbC5nZXRDb2x1bW5JbnQ2NCgwKTsKKyAgICAgICAgICAgIG1ldGFkYXRh
Lm5hbWUgPSBzcWwuZ2V0Q29sdW1uVGV4dCgxKTsKKworICAgICAgICAgICAgaW50IGtleVBhdGhT
aXplOworICAgICAgICAgICAgY29uc3QgdWludDhfdCoga2V5UGF0aEJ1ZmZlciA9IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihzcWwuZ2V0Q29sdW1uQmxvYigyLCBrZXlQYXRoU2l6ZSkpOwor
CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCS2V5UGF0aD4ga2V5UGF0aCA9IGRlc2Vy
aWFsaXplSURCS2V5UGF0aChrZXlQYXRoQnVmZmVyLCBrZXlQYXRoU2l6ZSk7CisKKyAgICAgICAg
ICAgIGlmICgha2V5UGF0aCkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRv
IGV4dHJhY3Qga2V5IHBhdGggbWV0YWRhdGEgZnJvbSBkYXRhYmFzZSIpOworICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZXRhZGF0
YS5rZXlQYXRoID0gKmtleVBhdGg7CisgICAgICAgICAgICBtZXRhZGF0YS5hdXRvSW5jcmVtZW50
ID0gc3FsLmdldENvbHVtbkludCgzKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1heEluZGV4SWQg
PSBzcWwuZ2V0Q29sdW1uSW50NjQoNCk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IHNxbC5zdGVw
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUpIHsK
KyAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgZmV0Y2hpbmcgb2JqZWN0IHN0b3JlIG1ldGFk
YXRhIGZyb20gZGF0YWJhc2Ugb24gZGlzayIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogT25jZSB3ZSBzYXZlIGluZGV4ZXMg
d2UgbmVlZCB0byBleHRyYWN0IHRoZWlyIG1ldGFkYXRhLCBhbHNvLgorCiAgICAgcmV0dXJuIG1l
dGFkYXRhOwogfQogCkBAIC0yOTAsNiArMzQ3LDQzIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6OmNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJUcmFuc2Fj
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpCit7
CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3FsaXRlREIpOwor
ICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CisKKyAgICBTUUxpdGVJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgeworICAgICAg
ICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY2hhbmdlIGRhdGFiYXNlIHZlcnNpb24gd2l0aCBhbiBl
c3RhYmxpc2gsIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvbk1vZGU6OlZlcnNpb25DaGFuZ2UpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIGNoYW5nZSBkYXRhYmFzZSB2ZXJzaW9uIGR1cmluZyBhIG5vbiB2ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3RkOjp1
bmlxdWVfcHRyPFZlY3Rvcjx1aW50OF90Pj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQ
YXRoKG1ldGFkYXRhLmtleVBhdGgpOworICAgIGlmICgha2V5UGF0aEJsb2IpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgU1FMaXRlU3RhdGVt
ZW50IHNxbCgqbV9zcWxpdGVEQiwgQVNDSUlMaXRlcmFsKCJJTlNFUlQgSU5UTyBPYmplY3RTdG9y
ZUluZm8gVkFMVUVTICg/LCA/LCA/LCA/LCA/KTsiKSk7CisgICAgaWYgKHNxbC5wcmVwYXJlKCkg
IT0gU1FMUmVzdWx0T2sKKyAgICAgICAgfHwgc3FsLmJpbmRJbnQ2NCgxLCBtZXRhZGF0YS5pZCkg
IT0gU1FMUmVzdWx0T2sKKyAgICAgICAgfHwgc3FsLmJpbmRUZXh0KDIsIG1ldGFkYXRhLm5hbWUp
ICE9IFNRTFJlc3VsdE9rCisgICAgICAgIHx8IHNxbC5iaW5kQmxvYigzLCBrZXlQYXRoQmxvYi0+
ZGF0YSgpLCBrZXlQYXRoQmxvYi0+c2l6ZSgpKSAhPSBTUUxSZXN1bHRPaworICAgICAgICB8fCBz
cWwuYmluZEludCg0LCBtZXRhZGF0YS5hdXRvSW5jcmVtZW50KSAhPSBTUUxSZXN1bHRPaworICAg
ICAgICB8fCBzcWwuYmluZEludDY0KDUsIG1ldGFkYXRhLm1heEluZGV4SWQpICE9IFNRTFJlc3Vs
dE9rCisgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkgeworICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCBhZGQgb2JqZWN0IHN0b3JlICclcycgdG8gaW4gT2JqZWN0U3Rv
cmVJbmZvIHRhYmxlICglaSkgLSAlcyIsIG1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSwgbV9z
cWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0
ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCmluZGV4IGIzNTY3N2UuLmNk
MTE5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVu
dGlmaWVyJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hhbmdlRGF0YWJhc2VWZXJz
aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24p
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFk
YXRhJikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGUoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3Jp
cHRzL3dlYmtpdDIvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIv
bWVzc2FnZXMucHkKaW5kZXggYTQ2NjRmZi4uODc4NjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1Nj
cmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQpAQCAtMTc3LDYgKzE3Nyw3IEBAIGRlZiBzdHJ1Y3Rf
b3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2Vy
U2V0dGluZ3MnLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1hckRldGFpbCcsCiAgICAgICAgICdX
ZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJywKKyAgICAgICAgJ1dlYkNvcmU6OklEQk9iamVj
dFN0b3JlTWV0YWRhdGEnLAogICAgICAgICAnV2ViQ29yZTo6SWRlbnRpdHlUcmFuc2Zvcm1PcGVy
YXRpb24nLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJywKICAgICAgICAgJ1dl
YkNvcmU6Okxlbmd0aCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggN2I0ZGViYS4uMWRmNWI4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjc3LDYgKzY3Nyw4
IEBACiAJCTUxODI5REE2MTYzN0M3MEMwMDA5NTNENiAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTgyOURBNDE2MzdDNzBDMDAwOTUzRDYgLyogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
ICovOyB9OwogCQk1MTgzNDU5MjEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
ODM0NTkwMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwICovOyB9
OwogCQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNDU5MTEz
NDUzMkU4MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggKi87IH07CisJCTUxODM1
M0RBMTg4NUJGOEMwMEQ5RkU0NCAvKiBJREJTZXJpYWxpemF0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM1M0Q4MTg4NUJGOEMwMEQ5RkU0
NCAvKiBJREJTZXJpYWxpemF0aW9uLmNwcCAqLzsgfTsKKwkJNTE4MzUzREIxODg1QkY4QzAwRDlG
RTQ0IC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODM1M0Q5MTg4NUJGOEMwMEQ5RkU0NCAvKiBJREJTZXJpYWxpemF0
aW9uLmggKi87IH07CiAJCTUxODNEREVDMTYzMEJERkMwMDhCRTVDNyAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgKi87IH07CiAJCTUxODcxQjVCMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3
MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovOyB9OwogCQk1MTg3
MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oICovOyB9OwpAQCAtMjMyNSw2ICsyMzI3LDggQEAKIAkJNTE4MjlE
QTQxNjM3QzcwQzAwMDk1M0Q2IC8qIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzNDU5MDEzNDUzMkU4MDA5MkI2OTYg
LyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxODM0NTkxMTM0NTMyRTgwMDkyQjY5NiAvKiBXZWJJY29uRGF0YWJhc2VDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODM1M0Q4MTg4NUJGOEMwMEQ5
RkU0NCAvKiBJREJTZXJpYWxpemF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IElEQlNlcmlhbGl6YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTgzNTNEOTE4ODVCRjhDMDBEOUZFNDQgLyogSURCU2VyaWFsaXphdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTZXJpYWxpemF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODNCMzkzMTM3OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFNoaW0ueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODRCQzRBMTMyRTkwN0EwMDZCOUUyOCAvKiBX
ZWJJY29uRGF0YWJhc2UubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSWNv
bkRhdGFiYXNlLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg3
MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDQ5MSw2ICs0NDk1LDggQEAKIAkJCQk1MUQwRDQyRTE4M0IzNDEz
MDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTFE
MEQ0MkYxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCAq
LywKIAkJCQk1MUQwRDQzMDE4M0IzNDEzMDA5NzA0MUQgLyogRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQk1MTgzNTNEODE4ODVCRjhDMDBEOUZFNDQgLyog
SURCU2VyaWFsaXphdGlvbi5jcHAgKi8sCisJCQkJNTE4MzUzRDkxODg1QkY4QzAwRDlGRTQ0IC8q
IElEQlNlcmlhbGl6YXRpb24uaCAqLywKIAkJCQk1MUQ1NEE3MjE4NUJBQzQyMDAwQ0FFRDIgLyog
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmggKi8sCiAJCQkJNTE1RTc3MkQxODQwMTU4MDAwMDcy
MDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLywKIAkJCQk1MTVFNzcyRTE4NDAxNTgwMDAw
NzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKQEAgLTYzODUsNiArNjM5MSw3IEBACiAJ
CQkJMzFENTkyOUYxNjZFMDYwMDAwRTZCRjAyIC8qIFdlYlBsdWdJbkNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDODcwMkQxMzBCNDlBMjAwMkMxMjU3IC8qIFdlYlBsdWdpblNpdGVEYXRh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUY4QjAxMTI0RTA3NzAwQTEzN0UwIC8q
IFdlYlBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzUzREIxODg1QkY4QzAw
RDlGRTQ0IC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTc0NEYw
MTI2MzhGQjMwMDZGMEYxMiAvKiBXZWJQb3B1cEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
RDU0QTczMTg1QkFDNDIwMDBDQUVEMiAvKiBJREJUcmFuc2FjdGlvbklkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUQzQjk0ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUu
aCBpbiBIZWFkZXJzICovLApAQCAtNzQ4Nyw2ICs3NDk0LDcgQEAKIAkJCQk1MUREOUYyODE2MzY3
REEyMDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3OTU1NjgxNjI4NzZDRjAwRkE0M0I2IC8qIE5l
dHdvcmtQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODNEREVDMTYzMEJERkMwMDhC
RTVDNyAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTE4MzUzREExODg1QkY4QzAwRDlGRTQ0IC8qIElEQlNlcmlhbGl6YXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU3MDE2
Mjg3N0NGMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE3OTU1NjcxNjI4NzZDQjAwRkE0M0I2IC8qIE5ldHdvcmtQcm9j
ZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggMTcwZTJiMy4uYzkyZDNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMjU4LDggKzI1OCwzNCBAQCB2b2lk
IFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnNldEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9u
SUQsIGludDY0X3QgZGF0YWJhcwogewogfQogCi12b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246
OmNyZWF0ZU9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IENyZWF0ZU9i
amVjdFN0b3JlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rp
b24sIGNvbnN0IENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVu
Y3Rpb248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxi
YWNrKQogeworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHNlcnZlclJlcXVlc3QgPSBBc3luY1Jl
cXVlc3RJbXBsPFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlv
bkNhbGxiYWNrKTsKKworICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWUgPSBvcGVyYXRpb24ub2Jq
ZWN0U3RvcmVNZXRhZGF0YSgpLm5hbWU7CisgICAgc2VydmVyUmVxdWVzdC0+c2V0QWJvcnRIYW5k
bGVyKFtvYmplY3RTdG9yZU5hbWUsIGNvbXBsZXRpb25DYWxsYmFja10oKSB7CisgICAgICAgIGNv
bXBsZXRpb25DYWxsYmFjayhJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIlVua25vd24gZXJyb3Igb2NjdXJl
ZCBjcmVhdGluZyBvYmplY3Qgc3RvcmUgJyVzJyIsIG9iamVjdFN0b3JlTmFtZS51dGY4KCkuZGF0
YSgpKSkpOworICAgIH0pOworCisgICAgdWludDY0X3QgcmVxdWVzdElEID0gc2VydmVyUmVxdWVz
dC0+cmVxdWVzdElEKCk7CisgICAgQVNTRVJUKCFtX3NlcnZlclJlcXVlc3RzLmNvbnRhaW5zKHJl
cXVlc3RJRCkpOworICAgIG1fc2VydmVyUmVxdWVzdHMuYWRkKHJlcXVlc3RJRCwgc2VydmVyUmVx
dWVzdC5yZWxlYXNlKCkpOworCisgICAgTE9HKElEQiwgIldlYlByb2Nlc3MgY3JlYXRlT2JqZWN0
U3RvcmUgJyVzJyBpbiB0cmFuc2FjdGlvbiBJRCAlbGx1IChyZXF1ZXN0IElEICVsbHUpIiwgb3Bl
cmF0aW9uLm9iamVjdFN0b3JlTWV0YWRhdGEoKS5uYW1lLnV0ZjgoKS5kYXRhKCksIHRyYW5zYWN0
aW9uLmlkKCksIHJlcXVlc3RJRCk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uOjpDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0SUQsIHRyYW5zYWN0aW9u
LmlkKCksIG9wZXJhdGlvbi5vYmplY3RTdG9yZU1ldGFkYXRhKCkpKTsKK30KKwordm9pZCBXZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgc3VjY2VzcykKK3sKKyAgICBMT0coSURCLCAiV2ViUHJvY2VzcyBkaWRDcmVhdGVP
YmplY3RTdG9yZSByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOworCisgICAgUmVmUHRyPEFz
eW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IG1fc2VydmVyUmVxdWVzdHMudGFrZShyZXF1ZXN0
SUQpOworCisgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAgICBz
ZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2VzcyA/IG51bGxwdHIgOiBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVu
a25vd24gZXJyb3Igb2NjdXJlZCBjcmVhdGluZyBvYmplY3Qgc3RvcmUiKSk7CiB9CiAKIHZvaWQg
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlSW5kZXgoSURCVHJhbnNhY3Rpb25CYWNrZW5k
JiwgY29uc3QgQ3JlYXRlSW5kZXhPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDUwNjI1NjQuLjM1YjY3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaApAQCAtMTAwLDYgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZXNldFRyYW5zYWN0aW9uKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZFJvbGxiYWNrVHJhbnNhY3Rpb24o
dWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlkQ2hhbmdlRGF0
YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKKyAgICB2b2lk
IGRpZENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsK
IAogICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5k
ZXggNDFhYWExOS4uNDI4NTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMyLDYgKzMyLDcgQEAgbWVzc2FnZXMg
LT4gV2ViSURCU2VydmVyQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUm9sbGJh
Y2tUcmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKIAogICAgIERp
ZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykK
KyAgICBEaWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vz
cykKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFU
QUJBU0VfUFJPQ0VTUykK
</data>
<flag name="review"
          id="245071"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>