<?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>200895</bug_id>
          
          <creation_ts>2019-08-19 13:33:09 -0700</creation_ts>
          <short_desc>Use a strongly typed identifier for StorageNamespace&apos;s identifier</short_desc>
          <delta_ts>2021-08-20 15:47:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562783</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-19 13:33:09 -0700</bug_when>
    <thetext>Use a strongly typed identifier for StorageNamespace&apos;s identifier instead of uint64_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562784</commentid>
    <comment_count>1</comment_count>
      <attachid>376705</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-19 13:36:44 -0700</bug_when>
    <thetext>Created attachment 376705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563059</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-20 08:25:15 -0700</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563065</commentid>
    <comment_count>3</comment_count>
      <attachid>376705</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-20 08:38:29 -0700</bug_when>
    <thetext>Comment on attachment 376705
Patch

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

&gt; Source/WebCore/storage/StorageNamespace.h:45
&gt; +    virtual Ref&lt;StorageNamespace&gt; copy(Page* newPage) = 0; // Only valid for session storage.

Comment is not really clear to me. I am not sure how it relates to the current patch.
If we want to precise the meaning of copy, maybe we should precise the name of the method?

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:195
&gt; +StorageArea* StorageManager::createLocalStorageArea(StorageNamespaceIdentifier storageNamespaceID, WebCore::SecurityOriginData&amp;&amp; origin, Ref&lt;WorkQueue&gt;&amp;&amp; workQueue)

We can probably remove WebCore:: here.

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:205
&gt; +StorageArea* StorageManager::createTransientLocalStorageArea(StorageNamespaceIdentifier storageNamespaceID, WebCore::SecurityOriginData&amp;&amp; topLevelOrigin, WebCore::SecurityOriginData&amp;&amp; origin, Ref&lt;WorkQueue&gt;&amp;&amp; workQueue)

Ditto.

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:216
&gt; +StorageArea* StorageManager::createSessionStorageArea(StorageNamespaceIdentifier storageNamespaceID, WebCore::SecurityOriginData&amp;&amp; origin, Ref&lt;WorkQueue&gt;&amp;&amp; workQueue)

Ditto.

&gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp:114
&gt; +    return makeObjectIdentifier&lt;PageIdentifierType&gt;(m_storageNamespaceID.toUInt64());

This is preexisting code but seems a bit odd to me.

&gt; Source/WebKit/WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:54
&gt;      return storageNamespaceProvider;

HashMap::ensure maybe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563069</commentid>
    <comment_count>4</comment_count>
      <attachid>376705</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-20 08:45:58 -0700</bug_when>
    <thetext>Comment on attachment 376705
Patch

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

&gt;&gt; Source/WebCore/storage/StorageNamespace.h:45
&gt;&gt; +    virtual Ref&lt;StorageNamespace&gt; copy(Page* newPage) = 0; // Only valid for session storage.
&gt; 
&gt; Comment is not really clear to me. I am not sure how it relates to the current patch.
&gt; If we want to precise the meaning of copy, maybe we should precise the name of the method?

I noticed while writing this patch (because it was made obvious by the new code factoring) that the implementation of this function is only correct if the StorageNamespace object is for session storage. If the StorageNamespace object is used for local storage, then it does not do the right thing. I think that ideally, this would be moved to a subclass (e.g. SessionStorageNamespace which we would need to create) but this is a bit out of scope of this patch, so I merely put in a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563070</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-20 08:47:47 -0700</bug_when>
    <thetext>Maybe a FIXME would be more adequate then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563076</commentid>
    <comment_count>6</comment_count>
      <attachid>376773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-20 09:03:01 -0700</bug_when>
    <thetext>Created attachment 376773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563093</commentid>
    <comment_count>7</comment_count>
      <attachid>376773</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-20 09:35:02 -0700</bug_when>
    <thetext>Comment on attachment 376773
Patch

Clearing flags on attachment: 376773

Committed r248901: &lt;https://trac.webkit.org/changeset/248901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563094</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-20 09:35:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563095</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-20 09:36:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54514978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786026</commentid>
    <comment_count>10</comment_count>
      <attachid>376773</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-20 15:46:27 -0700</bug_when>
    <thetext>Comment on attachment 376773
Patch

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

&gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp:120
&gt; +    ASSERT(m_storageType == StorageType::Local || m_storageType == StorageType::TransientLocal);
&gt; +    return m_storageNamespaceID.toUInt64();

Why is this returning the m_storageNamespaceID as a page group identifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786027</commentid>
    <comment_count>11</comment_count>
      <attachid>376773</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-20 15:47:20 -0700</bug_when>
    <thetext>Comment on attachment 376773
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebStorage/StorageNamespaceImpl.cpp:120
&gt;&gt; +    return m_storageNamespaceID.toUInt64();
&gt; 
&gt; Why is this returning the m_storageNamespaceID as a page group identifier?

This is among the many reasons I&apos;ve been working to remove page groups from WebKit2.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376705</attachid>
            <date>2019-08-19 13:36:44 -0700</date>
            <delta_ts>2019-08-20 09:02:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200895-20190819133643.patch</filename>
            <type>text/plain</type>
            <size>49425</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYwNTg4ZDA4MDMwYTky
YmVlZDY1MzY5MzYyMTk4Nzg2ZWRlNjUyZi4uZTA4OTgyMzg3MGY4NzMzYWU0ZThkYjE5Zjk1ZGJm
NWIwZTQxMDU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHkgdHlw
ZWQgaWRlbnRpZmllciBmb3IgU3RvcmFnZU5hbWVzcGFjZSdzIGlkZW50aWZpZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDg5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlLmg6CisKIDIwMTktMDgtMTkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkZjcz
YjA5ZWQ2Y2EyMjZmYjRiOGI5YzYxZWExZTk2MjFjYTJmYmY4Li5lOGE4ZWI3MmNmNzliNTUyY2Mz
NTM1Yzc3MzAzNjY1ZjhkM2U1ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE5LTA4
LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ry
b25nbHkgdHlwZWQgaWRlbnRpZmllciBmb3IgU3RvcmFnZU5hbWVzcGFjZSdzIGlkZW50aWZpZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDg5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhIHN0
cm9uZ2x5IHR5cGVkIGlkZW50aWZpZXIgZm9yIFN0b3JhZ2VOYW1lc3BhY2UncyBpZGVudGlmaWVy
IGluc3RlYWQgb2YgdWludDY0X3QsIHRvCisgICAgICAgIGF2b2lkIHR5cGUgY29uZnVzaW9uLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OkxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0
T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdl
QXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9UcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJT
ZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VNYW5hZ2VyU2V0OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV90ZXh0QXV0b1NpemluZ0FkanVz
dG1lbnRUaW1lcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OmxvY2FsU3RvcmFnZU5hbWVz
cGFjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1h
cDo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5o
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2Vzc2lvblN0b3JhZ2VQYWdlSUQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6cGFnZUdyb3VwSUQg
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZU5h
bWVzcGFjZUlEIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFu
c2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKwogMjAxOS0wOC0xOSAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSURCLXNwZWNpZmlj
IHF1b3RhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCmluZGV4IDc1
YjhiMDVhYzEwNGJhYjM4YjVhMjQzOWMzNGM2OTFiMzZkNzBiYTQuLjMwNWI4YTJiOWI1MzA3ZDJm
MjdmYjE1NDcyM2M1NzU2ODMzODRlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U3RvcmFnZU5hbWVzcGFjZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIFJlZjxTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgPSAwOwotICAgIHZp
cnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOworICAg
IHZpcnR1YWwgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSogbmV3UGFnZSkgPSAwOyAv
LyBPbmx5IHZhbGlkIGZvciBzZXNzaW9uIHN0b3JhZ2UuCiAKICAgICB2aXJ0dWFsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vzc2lv
bklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLmNwcAppbmRleCAxYTE0MGRjMzlkMWQ3Y2ZiMDJhNzhjNDlhNDA5MTA2NDFlZWQ2MDhj
Li5hZjliYmNmNmY5Y2NiMmUyZGZiYjVmM2JiMmY3OTBhM2IzZDVmMzcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZSBzaG91bGQgaW52ZXN0aWdhdGUg
YSB3YXkgdG8gc2hhcmUgaXQgd2l0aCBXZWJDb3JlLgotTG9jYWxTdG9yYWdlTmFtZXNwYWNlOjpM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU1hbmFnZXImIHN0b3JhZ2VNYW5hZ2VyLCB1aW50
NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCitMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OkxvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFnZXIsIFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICA6IG1fc3RvcmFnZU1hbmFn
ZXIoc3RvcmFnZU1hbmFnZXIpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhTdG9yYWdlTWFuYWdlcjo6
bG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlLmgKaW5kZXggNWVmM2ZlZmNiMzYxMjU4YzllODE2ODFhZDUxZjA4ZmYzN2UwODRkMy4u
NmJhZTQ2M2IzOGM2YTE4OTQwNTY3YzgxOWVhODc1N2IyYjRlMTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZU5hbWVzcGFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VOYW1lc3BhY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC00MCw3ICs0MSw3IEBAIGNsYXNzIExvY2FsU3RvcmFnZU5hbWVz
cGFjZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZShT
dG9yYWdlTWFuYWdlciYsIHVpbnQ2NF90IHN0b3JhZ2VNYW5hZ2VySUQpOworICAgIExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
KTsKICAgICB+TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAKICAgICBTdG9yYWdlTWFuYWdlciog
c3RvcmFnZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiAmbV9zdG9yYWdlTWFuYWdlcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5jcHAKaW5kZXggNzgzMThiYzNkZTUyOTM2M2U4ZjJkMDdkZDViZTAyMzFlY2E3
ODFmNy4uZDUyZjg2N2ViM2U3NmMzNGQ1MWNmYjg5M2M4ZDFmZmRiOTJkMWZlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1h
bmFnZXIoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogfQogCi12b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKK3ZvaWQgU3Rv
cmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTmFtZXNw
YWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVz
dHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkK
ICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3ZlKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdlTmFt
ZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlMKICAgICB9CiB9CiAKLVN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlTG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3b3JrUXVldWUp
CitTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoU3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBT
dG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEodWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TdG9yYWdl
QXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEodWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0
b3BMZXZlbE9yaWdpbiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8
V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVs
T3JpZ2luLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJlZjxXb3JrUXVl
dWU+JiYgd29ya1F1ZXVlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IEFTU0VSVCgoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5h
bWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKKyAgICBBU1NFUlQo
KEhhc2hNYXA8U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFJlZlB0cjxUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2U+Pjo6aXNWYWxpZEtleShzdG9yYWdlTmFtZXNwYWNlSUQpKSk7CiAK
ICAgICBpZiAoYXV0byogdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVh
dGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZN
b3ZlKHRvcExldmVsT3JpZ2luKSkpCiAgICAgICAgIHJldHVybiAmdHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luKSwgV1RG
TW92ZSh3b3JrUXVldWUpKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIFN0b3JhZ2VBcmVhKiBTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9y
YWdlTmFtCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYm
IHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0
b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8V29ya1F1ZXVlPiYmIHdv
cmtRdWV1ZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBBU1NFUlQo
KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+Ojppc1Zh
bGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKKyAgICBBU1NFUlQoKEhhc2hNYXA8U3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIsIFJlZlB0cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+Ojpp
c1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSA9IGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uoc3Rv
cmFnZU5hbWVzcGFjZUlEKSkKICAgICAgICAgcmV0dXJuICZzZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUod29ya1F1
ZXVlKSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpj
cmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUkKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdl
cjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlEKQorTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVh
dGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFn
ZU5hbWVzcGFjZUlEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0y
MzYsNyArMjM2LDcgQEAgTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0
T3JDcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QKICAgICB9KS5pdGVyYXRvci0+
dmFsdWUuZ2V0KCk7CiB9CiAKLVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFn
ZU1hbmFnZXI6OmdldE9yQ3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
TGV2ZWxPcmlnaW4pCitUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5h
Z2VyOjpnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTmFt
ZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIHRvcExldmVsT3JpZ2luKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAgVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNl
KiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2UKICAgICB9
KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBT
dG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQpCitTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1h
bmFnZXI6OmdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IDEyYzZiMjU4OGQ0NmRlNzg5N2U0Yjhm
MWNkM2U4Zjc4YjJkMGM1NjYuLmY3NmJiZTFkNTI3NzAyYjdmMTFkMDhiODdjNjQ4NGU1MzVkN2I0
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCisjaW5j
bHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZU1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01NSw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBTdG9yYWdlTWFuYWdlcihTdHJpbmcmJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogICAg
IH5TdG9yYWdlTWFuYWdlcigpOwogCi0gICAgdm9pZCBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
Ci0gICAgdm9pZCBkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlEKTsKLSAgICB2b2lkIGNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgdm9pZCBkZXN0cm95U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmll
ciBvbGRTdG9yYWdlTmFtZXNwYWNlSUQsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG5ld1N0
b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gZ2V0U2Vzc2lvblN0b3JhZ2VPcmlnaW5zQ3Jvc3NUaHJlYWRDb3B5KCkgY29uc3Q7CiAg
ICAgdm9pZCBkZWxldGVTZXNzaW9uU3RvcmFnZU9yaWdpbnMoKTsKQEAgLTc3LDE5ICs3OCwxOSBA
QCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvY2FsU3RvcmFnZURh
dGFiYXNlUXVvdGFJbkJ5dGVzOwogCi0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZUxvY2FsU3RvcmFn
ZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7Ci0gICAgU3RvcmFnZUFyZWEqIGNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJl
ZjxXb3JrUXVldWU+JiYpOwotICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVTZXNzaW9uU3RvcmFnZUFy
ZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7CisgICAgU3RvcmFnZUFyZWEqIGNyZWF0ZUxvY2FsU3Rv
cmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBS
ZWY8V29ya1F1ZXVlPiYmKTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VB
cmVhKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKiBnZXRPckNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQpOwotICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JD
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbik7Ci0g
ICAgU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UqIGdldE9yQ3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyKTsKKyAgICBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbik7CisgICAg
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOwogCiAgICAgUmVmUHRyPExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcj4gbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgc3RkOjp1bmlxdWVfcHRyPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+IG1f
bG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiwgc3RkOjp1bmlxdWVfcHRyPFRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8U2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKKyAgICBIYXNoTWFwPFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNl
Pj4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFN0b3Jh
Z2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+LCBzdGQ6
OnVuaXF1ZV9wdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV90cmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2VzOworICAgIEhhc2hNYXA8U3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+IG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXJTZXQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0LmNwcAppbmRleCBlMDExMGVhYTgwOWM1ZDc2Mjg5OTdmZDE2Yzc1NmZhMzA4
NTM3NGFmLi5jMzI3OTU5NjhmNDVlODJiZjhjNjAzOTYyZjYwMmRiZmUzMmYyOGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyU2V0OjpnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgRwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9M
b2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIG9yaWdpbkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFn
ZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJp
dHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9j
YWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFAKICAgICBzdG9yYWdl
QXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbi51bmlxdWVJRCgpKTsKIH0KIAotdm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRh
dGEsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVh
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNv
bm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVy
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmlnaW5E
YXRhLCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJl
YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpj
b25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubgog
ICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOwogfQog
Ci12b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwg
Q29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBT
dG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdG9yYWdlTmFtZXNw
YWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9y
aWdpbkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNDE1LDcgKzQxNSw3
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNsZWFyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyCiAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlQXJlYU1hcDo6RGlkQ2xlYXIoc3RvcmFnZU1hcFNlZWQpLCBzdG9yYWdlQXJlYUlE
KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIHVpbnQ2NF90IHRvU3RvcmFnZU5hbWVzcGFjZUlEKQor
dm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6
OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIHRvU3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXJTZXQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCmluZGV4IGQ1MzAyYmUwMzJkNGVmODFmOTc3MGI5
NWY2MjQyZWVhN2I0NWQ3YTguLmYxMTE1NGUzYTU0OTBhM2VmZmRmZTEzNjdjNGZhN2E1YTI0Mjc2
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5oCkBAIC03NiwxNSArNzYsMTUgQEAgcHJpdmF0ZToK
ICAgICBTdG9yYWdlTWFuYWdlclNldCgpOwogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwotICAg
IHZvaWQgY29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCAsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7Ci0gICAgdm9pZCBjb25uZWN0VG9U
cmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklE
ICwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgU2Vj
dXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7Ci0gICAg
dm9pZCBjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBjb25uZWN0VG9M
b2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwgU3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb25uZWN0VG9TdG9y
YWdlQXJlYUNhbGxiYWNrJiYpOworICAgIHZvaWQgY29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9y
YWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCAsIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgU2VjdXJpdHlPcmlnaW5EYXRhJiYs
IENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7CisgICAgdm9pZCBjb25uZWN0VG9TZXNz
aW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFn
ZUFyZWFDYWxsYmFjayYmKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldFZhbHVl
cyhJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIEdldFZhbHVlc0NhbGxi
YWNrJiYpOwogICAgIHZvaWQgc2V0SXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlk
ZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBT
ZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpOwogICAgIHZvaWQgcmVtb3ZlSXRlbShJUEM6OkNvbm5lY3Rpb24mLCBTdG9y
YWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
OwogICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9uJiwgU3RvcmFnZUFyZWFJZGVudGlmaWVy
LCBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpOwotICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3Jh
Z2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHZvaWQg
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Np
b25JRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwg
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpOwogCiAgICAg
SGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2VNYW5hZ2VyPj4g
bV9zdG9yYWdlTWFuYWdlcnM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBt
X3N0b3JhZ2VNYW5hZ2VyUGF0aHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2Fn
ZXMuaW4KaW5kZXggMzYwNWM3ZDczNWIzYzQzMzc5Mjg0ZTgzZDZmZDhjY2ExN2EyM2FlZC4uNGVi
OWNiYzliYmJmZjJhMDBkMTI3YzZhMmZhZmQ1ZGUzZTRhZjc4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgpAQCAtMjEsMTIgKzIxLDEyIEBACiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKIG1lc3NhZ2VzIC0+IFN0b3JhZ2VNYW5hZ2VyU2V0IHsKLSAgICBDb25uZWN0VG9Mb2Nh
bFN0b3JhZ2VBcmVhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3Jp
Z2luRGF0YSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9y
YWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAgICBDb25uZWN0VG9UcmFu
c2llbnRMb2NhbFN0b3JhZ2VBcmVhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
c3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHRv
cExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U3RvcmFnZUFyZWFJ
ZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rpb24KLSAg
ICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJl
YUlkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgor
ICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGEpIC0+IChP
cHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFyZWFJRCkgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9y
YWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHRvcExldmVsU2VjdXJpdHlPcmlnaW5EYXRhLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6
U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nv
bm5lY3Rpb24KKyAgICBDb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1l
c3BhY2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdp
bkRhdGEpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gc3RvcmFn
ZUFyZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCiAgICAgRGlzY29ubmVjdEZyb21T
dG9yYWdlQXJlYShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBzdG9yYWdlQXJlYUlEKSBX
YW50c0Nvbm5lY3Rpb24KICAgICBHZXRWYWx1ZXMoV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgc3RvcmFnZUFyZWFJRCkgLT4gKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHZhbHVlcykgU3lu
Y2hyb25vdXMgV2FudHNDb25uZWN0aW9uCi0gICAgQ2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyb21TdG9yYWdlTmFtZXNwYWNl
SUQsIHVpbnQ2NF90IHRvU3RvcmFnZU5hbWVzcGFjZUlEKSBXYW50c0Nvbm5lY3Rpb24KKyAgICBD
bG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
S2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCBX
ZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHRvU3RvcmFnZU5hbWVzcGFjZUlEKSBX
YW50c0Nvbm5lY3Rpb24KIAogICAgIFNldEl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZp
ZXIgc3RvcmFnZUFyZWFJRCwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyIHN0b3Jh
Z2VBcmVhSW1wbElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwgU3RyaW5n
IHZhbHVlLCBTdHJpbmcgdXJsU3RyaW5nKSBXYW50c0Nvbm5lY3Rpb24KICAgICBSZW1vdmVJdGVt
KFdlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyIHN0b3JhZ2VBcmVhSUQsIFdlYktpdDo6U3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllciBzdG9yYWdlQXJlYUltcGxJRCwgdWludDY0X3Qgc3RvcmFn
ZU1hcFNlZWQsIFN0cmluZyBrZXksIFN0cmluZyB1cmxTdHJpbmcpIFdhbnRzQ29ubmVjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNDMzZWZkYmM5N2Iz
NzcxNmUyZTI3NzU3MzQyZWE5MWRkZDg4ZjdmYS4uMDExNTZhZjEyNzFlYmM1Y2MwY2RjZWZjNDI2
NWJhOGIzYWZiMTY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC0yMTksNiArMjE5LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJz
KHJlY2VpdmVyKToKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJywKICAg
ICAgICAgJ1dlYktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6
U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcicsCiAgICAgXSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjVkNzRkMDEwNDVhNDZkM2EyMTM2NTRjMzlhZmFkYWZj
YmY2NmYzYy4uMDRhMThjMzRiZmUyYTlhYWI5MmVhZTA2Yjg3MmU0OWJhYTk0ODY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MDYs
NiArOTA2LDcgQEAKIAkJNDYzRkQ0ODIxRUI5NEVDMDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5o
ICovOyB9OwogCQk0NjU3RDg4OTIyNjY0QTJEMDA1REU4MjMgLyogV0tPcmllbnRhdGlvbkFjY2Vz
c0FsZXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjU3RDg4NzIyNjY0QTE5MDA1REU4MjMgLyogV0tPcmllbnRhdGlvbkFjY2Vzc0FsZXJ0LmggKi87
IH07CiAJCTQ2NTdEODhBMjI2NjRBMkYwMDVERTgyMyAvKiBXS09yaWVudGF0aW9uQWNjZXNzQWxl
cnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjU3
RDg4ODIyNjY0QTFBMDA1REU4MjMgLyogV0tPcmllbnRhdGlvbkFjY2Vzc0FsZXJ0Lm1tICovOyB9
OworCQk0NjVGNEUwNjIzMEIyRTk1MDAzQ0VEQjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUY0
RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oICovOyB9
OwogCQk0NjZCQzAzQzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NkJDMDM5MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
ICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycy5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CkBAIC0zMTkwLDYgKzMxOTEsNyBAQAog
CQk0NjU3RDg4ODIyNjY0QTFBMDA1REU4MjMgLyogV0tPcmllbnRhdGlvbkFjY2Vzc0FsZXJ0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tPcmllbnRhdGlvbkFj
Y2Vzc0FsZXJ0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVGNEUwMjIzMDc1
OUQ1MDAzQ0VEQjcgLyogU3RvcmFnZUFyZWFJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
b3JhZ2VBcmVhSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVG
NEUwMzIzMDc2MDRFMDAzQ0VEQjcgLyogU3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2NUY0RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZCQzAzODFGQTI2NkM5MDAyRkE5QzEg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZCQzAzOTFGQTI2NkM5MDAyRkE5QzEgLyogV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY2QkMwM0ExRkEyNjZDOTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTE1OCw2ICs1MTYwLDcgQEAKIAkJCQkxQUNFQ0QyMjE3MTYyREIxMDAxRkM5RUYg
LyogU3RvcmFnZUFyZWFNYXAuY3BwICovLAogCQkJCTFBQ0VDRDIzMTcxNjJEQjEwMDFGQzlFRiAv
KiBTdG9yYWdlQXJlYU1hcC5oICovLAogCQkJCTFBMzM0REVBMTZERThCNjgwMDZBOEUzOCAvKiBT
dG9yYWdlQXJlYU1hcC5tZXNzYWdlcy5pbiAqLywKKwkJCQk0NjVGNEUwNTIzMEIyRTdDMDAzQ0VE
QjcgLyogU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCAqLywKIAkJCQkxQTE3NjM1NDE2QjFE
NUQwMDBEODhGRDYgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwICovLAogCQkJCTFBMTc2MzU1
MTZCMUQ1RDAwMEQ4OEZENiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5oICovLAogCQkJCTFBNTJD
MEY1MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwICov
LApAQCAtOTY4Myw2ICs5Njg2LDcgQEAKIAkJCQk5M0IyNjE0RDIyN0QxNDlFMDBCOTdBNzYgLyog
U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNkIwNTk4MjMwMzkwOTcwMDJG
QzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM2OEVFREYy
MzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ2NUY0RTA2MjMwQjJFOTUwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMDBENkMxODMyN0MxMjAwMDg3REQ3IC8q
IFN0cmluZ1JlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk2QkQ4NUQxNTAxOUJDMzAw
NzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdGRDMxODYy
MkIzNTE2QzAwOEQwRThCIC8qIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBlNDU1MjYxODBjMDFiYmQzNWFlNTI1
ZTgyNWJkN2Q0YWNmZGY5YTgyLi42NWM5ZjI1ZDJlZTg4Mzc4MzdkMjU0N2MxMmVlNjFmY2ZmOGQx
ZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBw
YWdlR3JvdXAsIGJvbwogCiAgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVu
dGlmaWVyKCkpLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQp
OwogCi0gICAgYXV0byB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHBhZ2VHcm91cC0+cGFnZUdyb3VwSUQoKSk7Cisg
ICAgYXV0byB3ZWJTdG9yYWdlTmFtZVNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXI6OmdldE9yQ3JlYXRlKCpwYWdlR3JvdXApOwogICAgIHdlYlN0b3JhZ2VOYW1lU3Bh
Y2VQcm92aWRlci0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhlbmFibGVk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAzNDUzNzA2ZDMwMjBjYTU0NjdlMjQ2NjE4MmFhY2FjMWZhNTY3ODliLi5hZDkwNjk5MDc1
YzA4NmRiNTU2NDc1YjY3ZWExZTdkOGNiZTBlMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDg0LDcgKzQ4NCw3IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSA9ICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSgpOwog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBXZWJEYXRhYmFzZVByb3Zp
ZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cC0+cGFnZUdyb3VwSUQoKSk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24ucGx1Z2luSW5mb1Byb3ZpZGVyID0gJldlYlBsdWdpbkluZm9Qcm92aWRlcjo6
c2luZ2xldG9uKCk7Ci0gICAgcGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyID0gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91
cC0+cGFnZUdyb3VwSUQoKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyID0gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZSgqbV9w
YWdlR3JvdXApOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJDb250ZW50UHJvdmlkZXIgPSBt
X3VzZXJDb250ZW50Q29udHJvbGxlci5wdHIoKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52aXNp
dGVkTGlua1N0b3JlID0gVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBh
cmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGMxNzIyMjAzMmZiYWY4YWFlOWM0YTRiNTNmZGE1MGUw
OWVkODE4Y2UuLjQwY2VkNzY0ZTMwNmYxOWUzMDY4NGJjZTY3Y2VjZDY3ZjYyMDA2NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcg
QEAKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiU2hhcmVTaGVldENh
bGxiYWNrSUQuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlICJTdG9yYWdl
TmFtZXNwYWNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAi
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIK
QEAgLTI5MSw2ICsyOTIsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgU3RvcmFnZU5h
bWVzcGFjZUlkZW50aWZpZXIgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXJUeXBlPihtX3BhZ2VJRC50b1VJbnQ2NCgpKTsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2VHcm91cFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlR3JvdXBQcm94eS5oCmluZGV4IGJlOWRmMDFkZmMzMmY2MjkwM2NjYTI5ZjVjODYw
NTEzYjkwNTQ1MDIuLmJkNGQ0MjkwMWRlZGUxNGRiYmZiNGUzNWI4ZWQxMTlkOTY5ZjA3NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3Vw
UHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIldlYlBhZ2VHcm91cERhdGEuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTQ0LDYg
KzQ1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLmlkZW50aWZpZXI7IH0KICAgICB1aW50NjRfdCBwYWdlR3JvdXBJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wYWdlR3JvdXBJRDsgfQorICAgIFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIGxvY2FsU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllclR5cGU+
KHBhZ2VHcm91cElEKCkpOyB9CiAgICAgV2ViQ29yZTo6UGFnZUdyb3VwKiBjb3JlUGFnZUdyb3Vw
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlR3JvdXA7IH0KIAogICAgIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlciYgdXNlckNvbnRlbnRDb250cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMGMyMWU3
MTlmNjJlNDNmNzMwNGQxMTQyZTg3NTAxYmZkYThmZGNiOS4uYjUyNWMzMjExOTY4OWU4MDhjMDAx
Zjc1MjI2NTFiOTJkNjgyNmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZv
aWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudChjb25zdCBPcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJCiB7CiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lv
biBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAg
Ly8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVy
PFBhZ2VJZGVudGlmaWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNl
SUQoKSkpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFjZS0+c2Vzc2lvblN0b3JhZ2VQYWdlSUQoKSk7CiAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFs
PFN0b3JhZ2VBcmVhSW1wbElkZQogICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBmcmFtZXM7CiAK
ICAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVx
dWl2YWxlbnQgdG8gd2ViIHBhZ2UgZ3JvdXAgSURzLgotICAgIFBhZ2VHcm91cCYgcGFnZUdyb3Vw
ID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0b3JhZ2VOYW1lc3Bh
Y2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKS0+Y29yZVBhZ2VHcm91cCgpOworICAgIFBhZ2VHcm91
cCYgcGFnZUdyb3VwID0gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2VHcm91cChtX3N0
b3JhZ2VOYW1lc3BhY2UtPnBhZ2VHcm91cElEKCkpLT5jb3JlUGFnZUdyb3VwKCk7CiAgICAgY29u
c3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gcGFnZUdyb3VwLnBhZ2VzKCk7CiAgICAgZm9yIChI
YXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwYWdlcy5iZWdpbigpLCBlbmQgPSBw
YWdlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gJigqaXQpLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2
ZXJzZU5leHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2E1Y2ViNDQ3NzNiZWMwZWNlNDc1YmZjMDRkZGRmYWZkYmJkNDNkOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2VudW0gU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFN0b3Jh
Z2VOYW1lc3BhY2VJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllclR5cGU+OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMTE0NWQ5
YzUxNTU4MjNjOGU2NGM3NjU2Njk3NDVhNmU0MjRhYzUwMy4uNWJkODAyNzI1NTkzYmU2MTg1NmY2
NGY3ZjRiODE2MzkxMzc5ZmJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDIsMjIg
KzQyLDIyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KElkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRp
ZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsKIH0KIAotUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2
NF90IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpUcmFuc2ll
bnRMb2NhbCwgaWRlbnRpZmllciwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMsIHNlc3Np
b25JRCkpOwogfQogCi1TdG9yYWdlTmFtZXNwYWNlSW1wbDo6U3RvcmFnZU5hbWVzcGFjZUltcGwo
V2ViQ29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlw
ZSwgSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgOiBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogICAgICwgbV9zdG9y
YWdlTmFtZXNwYWNlSUQoc3RvcmFnZU5hbWVzcGFjZUlEKQogICAgICwgbV90b3BMZXZlbE9yaWdp
bih0b3BMZXZlbE9yaWdpbikKQEAgLTkzLDExICs5MywxMiBAQCBSZWY8U3RvcmFnZUFyZWE+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlYwogUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBh
Z2UqIG5ld1BhZ2UpCiB7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBB
U1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbik7CiAKICAgICBpZiAo
YXV0byBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
eGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQotICAgICAgICBuZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNl
dDo6Q2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShuZXdQYWdlLT5zZXNzaW9uSUQoKSwgbV9z
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFnZUlE
KCkudG9VSW50NjQoKSksIDApOworICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlclNldDo6Q2xvbmVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShuZXdQYWdlLT5zZXNzaW9uSUQoKSwgbV9zdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+c2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyKCkpLCAwKTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKG1fc3RvcmFnZVR5cGUsIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdl
KS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUlu
Qnl0ZXMsIG5ld1BhZ2UtPnNlc3Npb25JRCgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdl
KG5ld1BhZ2UpLT5zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIoKSwgbV90b3BMZXZl
bE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0ZXMsIG5ld1BhZ2UtPnNlc3Npb25JRCgpKSk7CiB9
CiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Npb25JREZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtMTA3LDQgKzEwOCwxNiBAQCB2b2lkIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpzZXRTZXNzaW9uSURGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKICAgICAgICAgc3RvcmFnZUFyZWFNYXAtPmRpc2Nvbm5lY3QoKTsKIH0KIAorUGFnZUlk
ZW50aWZpZXIgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNlc3Npb25TdG9yYWdlUGFnZUlEKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbik7
CisgICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4obV9z
dG9yYWdlTmFtZXNwYWNlSUQudG9VSW50NjQoKSk7Cit9CisKK3VpbnQ2NF90IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpwYWdlR3JvdXBJRCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fc3RvcmFnZVR5
cGUgPT0gU3RvcmFnZVR5cGU6OkxvY2FsIHx8IG1fc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGU6
OlRyYW5zaWVudExvY2FsKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlTmFtZXNwYWNlSUQudG9VSW50
NjQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRl
eCA4MTk4MmVmNWQwYjgxMTNmNDE0MDI2YTQzN2UxMzI2MmJhMWU5ODExLi41MzdkZGU5OTAwNmI2
OGUxZGE0M2YwNjUxOTQ1ZDY4N2ZkMWUwZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1N0b3JhZ2VBcmVhLmg+CkBAIC00MCwxNCArNDEsMTggQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xh
c3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOwotICAgIHN0YXRpYyBSZWY8
U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxP
cmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIHVzaW5n
IElkZW50aWZpZXIgPSBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcjsKKworICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFj
ZShJZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKKyAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExl
dmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEKTsKIAogICAg
IHZpcnR1YWwgflN0b3JhZ2VOYW1lc3BhY2VJbXBsKCk7CiAKICAgICBXZWJDb3JlOjpTdG9yYWdl
VHlwZSBzdG9yYWdlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVR5cGU7IH0KLSAgICB1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VOYW1l
c3BhY2VJRDsgfQorICAgIElkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yYWdlTmFtZXNwYWNlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBzZXNzaW9uU3RvcmFnZVBhZ2VJRCgpIGNvbnN0OworICAgIHVpbnQ2NF90IHBhZ2VHcm91cElE
KCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV90b3BMZXZlbE9yaWdpbi5nZXQoKTsgfQogICAgIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fcXVvdGFJbkJ5dGVzOyB9CiAgICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSUQ7
IH0KQEAgLTU3LDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSURGb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklEKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSwgdWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4s
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpT
ZXNzaW9uSUQpOwogCiAgICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYShj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBvdmVycmlkZTsKLSAgICBSZWY8V2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7Cisg
ICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29yZTo6UGFnZSopIG92
ZXJyaWRlOyAvLyBPbmx5IHZhbGlkIGZvciBzZXNzaW9uIHN0b3JhZ2UuCiAKICAgICBjb25zdCBX
ZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBlOwotICAgIGNvbnN0IHVpbnQ2NF90IG1f
c3RvcmFnZU5hbWVzcGFjZUlEOworICAgIGNvbnN0IElkZW50aWZpZXIgbV9zdG9yYWdlTmFtZXNw
YWNlSUQ7CiAKICAgICAvLyBPbmx5IHVzZWQgZm9yIHRyYW5zaWVudCBsb2NhbCBzdG9yYWdlIG5h
bWVzcGFjZXMuCiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3Rv
cExldmVsT3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXgg
OWU3MjE2MzFiM2I0YmQ3MmVjMDMzZTc5YmFlMGQzNzUyNTRiYWMwNC4uMjkyOThhNmMzMDZhOTBk
YjIyYmFiMjYyMzZmOGI1MmM0NzdjYmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJv
dmlkZXIuY3BwCkBAIC0yOCw1NiArMjgsNTcgQEAKIAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFBy
b3h5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+
JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkKK3N0YXRpYyBIYXNoTWFwPFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyLCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVycygpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
dWludDY0X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+PiBzdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyLCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIqPj4gc3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyczsKIAogICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJz
OwogfQogCi1SZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9y
Q3JlYXRlKFdlYlBhZ2VHcm91cFByb3h5JiBwYWdlR3JvdXApCiB7Ci0gICAgYXV0byYgc2xvdCA9
IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOworICAgIGF1dG8mIHNsb3QgPSBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJz
KCkuYWRkKHBhZ2VHcm91cC5sb2NhbFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKCksIG51bGxw
dHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoc2xvdCkKICAgICAgICAgcmV0dXJuICpzbG90
OwogCi0gICAgYXV0byBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFdl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcihpZGVudGlmaWVyKSk7CisgICAgYXV0byBzdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcihwYWdlR3JvdXAubG9jYWxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcigpKSk7CiAgICAg
c2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5wdHIoKTsKIAogICAgIHJldHVybiBzdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXI7CiB9CiAKLVdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIpCi0gICAgOiBt
X2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6V2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIGxvY2Fs
U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpCisgICAgOiBtX2xvY2FsU3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIobG9jYWxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcikKIHsKIH0KIAogV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkK
IHsKLSAgICBBU1NFUlQoc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmNvbnRhaW5zKG1faWRl
bnRpZmllcikpOworICAgIEFTU0VSVChzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkuY29udGFp
bnMobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKSk7CiAKLSAgICBzdG9yYWdlTmFt
ZXNwYWNlUHJvdmlkZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgc3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVycygpLnJlbW92ZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIp
OwogfQogCiBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNp
Z25lZCBxdW90YSkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJ
RCgpLnRvVUludDY0KCksIHF1b3RhLCBwYWdlLnNlc3Npb25JRCgpKTsKKyAgICByZXR1cm4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6
OmZyb21Db3JlUGFnZSgmcGFnZSktPnNlc3Npb25TdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcigp
LCBxdW90YSwgcGFnZS5zZXNzaW9uSUQoKSk7CiB9CiAKIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAg
IHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KG1faWRlbnRpZmllciwgcXVvdGEsIHNlc3Npb25JRCk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogUmVmPFdlYkNvcmU6OlN0
b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAg
ICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFn
ZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSwgc2Vzc2lvbklE
KTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIHRvcExl
dmVsT3JpZ2luLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaAppbmRleCAyMmU0MmY1MjBkYWNhM2RmNjljNWE4NjA1NjZmZjRhNzcwMWRm
NmMxLi5iYzk2NTRjYTE3MTYzYjJmMGMzNDk4ZjE2ZDk2NjY3ZWM1YTQwZTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMjUsMjMgKzI1LDI2IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CisKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
PiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFdlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUoV2ViUGFnZUdyb3VwUHJveHkmKTsK
ICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIodWludDY0X3QgaWRlbnRp
Zmllcik7CisgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyIGxvY2FsU3RvcmFnZUlkZW50aWZpZXIpOwogCiAgICAgUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdl
YkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAgICAgUmVmPFdlYkNvcmU6
OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBx
dW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogICAgIFJlZjxXZWJDb3JlOjpTdG9yYWdl
TmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRl
OwogCi0gICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIGNvbnN0IFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcjsKIH07
CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376773</attachid>
            <date>2019-08-20 09:03:01 -0700</date>
            <delta_ts>2019-08-20 09:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200895-20190820090300.patch</filename>
            <type>text/plain</type>
            <size>51087</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA5ODZkMjRlMWQ3OGFh
NDAxMWY5NGMxNjNjYWVmNWZkZGU2ZGE5Yy4uMTAwYzJmNTM1ZTZjMzM0ZDM1NTZmYTI1OTY0YWRl
YjUxNDA1Y2RkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA4LTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHkgdHlw
ZWQgaWRlbnRpZmllciBmb3IgU3RvcmFnZU5hbWVzcGFjZSdzIGlkZW50aWZpZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDg5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4gYW5kIFlvdWVubiBGYWJsZXQuCisKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2UuaDoKKwogMjAxOS0wOC0yMCAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBJREIgcXVvdGEgY2hlY2sg
bGFtYmRhcyB0YWtlIGEgd2VhayBvZiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIGluc3Rl
YWQgb2YgYSByZWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWQ3MjAyY2IzMGJhODNiZWUzMjA0MmVkYjg0NDIzYTBm
OTJlYzczYS4uYjUzNGEwNWMzMjgwMTY5M2FhM2U0YjFkMTgzMzRmZjg4MjYxOGM2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2NyBAQAorMjAxOS0wOC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5IHR5cGVkIGlkZW50aWZpZXIgZm9yIFN0
b3JhZ2VOYW1lc3BhY2UncyBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuIGFuZCBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5IHR5
cGVkIGlkZW50aWZpZXIgZm9yIFN0b3JhZ2VOYW1lc3BhY2UncyBpZGVudGlmaWVyIGluc3RlYWQg
b2YgdWludDY0X3QsIHRvCisgICAgICAgIGF2b2lkIHR5cGUgY29uZnVzaW9uLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OkxvY2FsU3RvcmFnZU5hbWVz
cGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VO
YW1lc3BhY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmRl
c3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VN
YW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSk6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEpOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYSk6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2Nh
bFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5l
Y3RUb1Nlc3Npb25TdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
U2V0OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1l
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUdyb3VwUHJveHk6OmxvY2FsU3RvcmFnZU5hbWVzcGFjZUlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Np
b25TdG9yYWdlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0
Y2hMb2NhbFN0b3JhZ2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c2Vzc2lvblN0b3JhZ2VQYWdlSUQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6cGFnZUdyb3VwSUQgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgor
ICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZU5hbWVzcGFjZUlE
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyOjpnZXRPckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVUcmFuc2llbnRMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaDoKKwogMjAxOS0wOC0yMCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQg
Zm9yIEphdmFTY3JpcHQgQmlnSW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZS5oCmluZGV4IDc1YjhiMDVhYzEwNGJhYjM4YjVhMjQzOWMzNGM2OTFiMzZkNzBiYTQuLjcz
ODA2YzdiNDE2MDA0NDQ3YTZkNTY5NjMyNWY3ZjM1ZjdhN2I3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZS5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIFN0b3Jh
Z2VOYW1lc3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdG9yYWdlTmFtZXNwYWNlPiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVzcGFjZSgpID0gZGVmYXVsdDsKICAgICB2aXJ0
dWFsIFJlZjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JikgPSAwOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSB2YWxpZCBmb3Igc2Vzc2lvbiBz
dG9yYWdlIGFuZCBzaG91bGQgcHJvYmFibHkgYmUgbW92ZWQgdG8gYSBzdWJjbGFzcy4KICAgICB2
aXJ0dWFsIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5KFBhZ2UqIG5ld1BhZ2UpID0gMDsKIAog
ICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcAppbmRleCAxYTE0MGRjMzlkMWQ3Y2ZiMDJhNzhjNDlh
NDA5MTA2NDFlZWQ2MDhjLi5hZjliYmNmNmY5Y2NiMmUyZGZiYjVmM2JiMmY3OTBhM2IzZDVmMzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlTmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBXZSBzaG91
bGQgaW52ZXN0aWdhdGUgYSB3YXkgdG8gc2hhcmUgaXQgd2l0aCBXZWJDb3JlLgotTG9jYWxTdG9y
YWdlTmFtZXNwYWNlOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU1hbmFnZXImIHN0b3Jh
Z2VNYW5hZ2VyLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCitMb2NhbFN0b3JhZ2VOYW1l
c3BhY2U6OkxvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYgc3RvcmFnZU1hbmFn
ZXIsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICA6
IG1fc3RvcmFnZU1hbmFnZXIoc3RvcmFnZU1hbmFnZXIpCiAgICAgLCBtX3F1b3RhSW5CeXRlcyhT
dG9yYWdlTWFuYWdlcjo6bG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
TG9jYWxTdG9yYWdlTmFtZXNwYWNlLmgKaW5kZXggNWVmM2ZlZmNiMzYxMjU4YzllODE2ODFhZDUx
ZjA4ZmYzN2UwODRkMy4uNmJhZTQ2M2IzOGM2YTE4OTQwNTY3YzgxOWVhODc1N2IyYjRlMTVlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZU5hbWVzcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00MCw3ICs0MSw3IEBAIGNsYXNzIExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYsIHVpbnQ2NF90IHN0b3JhZ2VNYW5hZ2VySUQp
OworICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTWFuYWdlciYsIFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyKTsKICAgICB+TG9jYWxTdG9yYWdlTmFtZXNwYWNlKCk7CiAKICAgICBT
dG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIoKSBjb25zdCB7IHJldHVybiAmbV9zdG9yYWdl
TWFuYWdlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggNzgzMThiYzNkZTUyOTM2M2U4ZjJk
MDdkZDViZTAyMzFlY2E3ODFmNy4uNWQ2MThhYWJmYjIzNjcxOWQ2ZGEwMTQ4ZjI3YjMwZThiYjZl
ZDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0b3JhZ2VNYW5h
Z2VyOjp+U3RvcmFnZU1hbmFnZXIoKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
fQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3ZvaWQg
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VOYW1l
c3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC02OSw3ICs2OSw3IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdl
cjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBTdG9y
YWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCkKICAgICAgICAgbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMucmVtb3Zl
KHN0b3JhZ2VOYW1lc3BhY2VJRCk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRf
dCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1l
c3BhY2VJRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlE
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1CiAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNs
b25lVG8oKm5ld1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKTsKIH0KIAotSGFzaFNldDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IFN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9y
aWdpbnNDcm9zc1RocmVhZENvcHkoKSBjb25zdAorSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+
IFN0b3JhZ2VNYW5hZ2VyOjpnZXRTZXNzaW9uU3RvcmFnZU9yaWdpbnNDcm9zc1RocmVhZENvcHko
KSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMTMsNyAr
MTEzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VPcmlnaW5z
KCkKICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmNsZWFyQWxsU3RvcmFnZUFyZWFz
KCk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmll
c0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVTZXNzaW9uU3RvcmFnZUVudHJpZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlU2Vzc2lvblN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZToKICAgICB9CiB9CiAKLUhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luc0Nyb3Nz
VGhyZWFkQ29weSgpIGNvbnN0CitIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZU1h
bmFnZXI6OmdldExvY2FsU3RvcmFnZU9yaWdpbnNDcm9zc1RocmVhZENvcHkoKSBjb25zdAogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVkU2luY2Uo
V2FsbFRpbWUgdGltZSkKICAgICB9CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUxv
Y2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTG9jYWxT
dG9yYWdlRW50cmllc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4m
IG9yaWdpbnMpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE5Miw3
ICsxOTIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6UwogICAgIH0KIH0KIAotU3RvcmFnZUFy
ZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBSZWY8
V29ya1F1ZXVlPiYmIHdvcmtRdWV1ZSkKK1N0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlTG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFt
ZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4mJiB3
b3JrUXVldWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIwMiwx
MCArMjAyLDEwIEBAIFN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlTG9jYWxTdG9y
YWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVN0b3JhZ2VBcmVhKiBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxT
dG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQorU3RvcmFnZUFyZWEqIFN0b3Jh
Z2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFN0b3JhZ2VOYW1lc3Bh
Y2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
TGV2ZWxPcmlnaW4sIFNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgUmVmPFdvcmtRdWV1ZT4m
JiB3b3JrUXVldWUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNT
RVJUKChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlPj46OmlzVmFsaWRLZXkoc3RvcmFnZU5hbWVzcGFjZUlEKSkpOworICAgIEFTU0VSVCgoSGFz
aE1hcDxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZT4+Ojppc1ZhbGlkS2V5KHN0b3JhZ2VOYW1lc3BhY2VJRCkpKTsKIAogICAg
IGlmIChhdXRvKiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgPSBnZXRPckNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUo
dG9wTGV2ZWxPcmlnaW4pKSkKICAgICAgICAgcmV0dXJuICZ0cmFuc2llbnRMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3Zl
KHdvcmtRdWV1ZSkpOwpAQCAtMjEzLDEwICsyMTMsMTAgQEAgU3RvcmFnZUFyZWEqIFN0b3JhZ2VN
YW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHVpbnQ2NF90IHN0b3JhZ2VO
YW0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29y
a1F1ZXVlKQorU3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1
cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIFJlZjxXb3JrUXVldWU+JiYgd29ya1F1ZXVlKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVCgoSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFsaWRLZXkoc3RvcmFn
ZU5hbWVzcGFjZUlEKSkpOworICAgIEFTU0VSVCgoSGFzaE1hcDxTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllciwgUmVmUHRyPFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj46OmlzVmFsaWRLZXkoc3Rv
cmFnZU5hbWVzcGFjZUlEKSkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlID0gZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShzdG9yYWdlTmFtZXNwYWNl
SUQpKQogICAgICAgICByZXR1cm4gJnNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLT5nZXRPckNyZWF0
ZVN0b3JhZ2VBcmVhKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZSh3b3JrUXVldWUpKTsKQEAgLTIy
NCw3ICsyMjQsNyBAQCBTdG9yYWdlQXJlYSogU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25T
dG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1Mb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCitMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZUxvY2FsU3RvcmFn
ZU5hbWVzcGFjZShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIzNiw3ICsyMzYsNyBA
QCBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdAogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
IH0KIAotVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0
T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5h
bWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbikK
K1RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogU3RvcmFnZU1hbmFnZXI6OmdldE9yQ3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wTGV2ZWxPcmln
aW4pCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI0OCw3ICsyNDgs
NyBAQCBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRP
ckNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZQogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQo
KTsKIH0KIAotU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UqIFN0b3JhZ2VNYW5hZ2VyOjpnZXRPckNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkK
K1Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBTdG9yYWdlTWFuYWdlcjo6Z2V0T3JDcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFt
ZXNwYWNlSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyLmgKaW5kZXggMTJjNmIyNTg4ZDQ2ZGU3ODk3ZTRiOGYxY2QzZThmNzhiMmQwYzU2Ni4uZjc2
YmJlMWQ1Mjc3MDJiN2YxMWQwOGI4N2M2NDg0ZTUzNWQ3YjQ0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTU1LDkgKzU2LDkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VNYW5hZ2VyKFN0
cmluZyYmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgflN0b3JhZ2VNYW5hZ2VyKCk7CiAK
LSAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICB2b2lkIGRlc3Ryb3lTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpOwotICAgIHZv
aWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIHVpbnQ2NF90IG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgdm9pZCBjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShT
dG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG9sZFN0b3JhZ2VOYW1lc3BhY2VJ
RCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKIAog
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZXNzaW9uU3RvcmFn
ZU9yaWdpbnNDcm9zc1RocmVhZENvcHkoKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25T
dG9yYWdlT3JpZ2lucygpOwpAQCAtNzcsMTkgKzc4LDE5IEBAIHB1YmxpYzoKICAgICAKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbG9jYWxTdG9yYWdlRGF0YWJhc2VRdW90YUluQnl0ZXM7CiAK
LSAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVl
PiYmKTsKLSAgICBTdG9yYWdlQXJlYSogY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlQXJlYSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgUmVmPFdvcmtRdWV1ZT4mJik7Ci0gICAg
U3RvcmFnZUFyZWEqIGNyZWF0ZVNlc3Npb25TdG9yYWdlQXJlYSh1aW50NjRfdCBzdG9yYWdlTmFt
ZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYm
KTsKKyAgICBTdG9yYWdlQXJlYSogY3JlYXRlTG9jYWxTdG9yYWdlQXJlYShTdG9yYWdlTmFtZXNw
YWNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXb3JrUXVl
dWU+JiYpOworICAgIFN0b3JhZ2VBcmVhKiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVh
KFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFJlZjxXb3JrUXVldWU+JiYpOworICAg
IFN0b3JhZ2VBcmVhKiBjcmVhdGVTZXNzaW9uU3RvcmFnZUFyZWEoU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBSZWY8V29ya1F1ZXVlPiYm
KTsKIAogcHJpdmF0ZToKLSAgICBMb2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGdldE9yQ3JlYXRlTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAgVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBnZXRPckNyZWF0ZVRyYW5zaWVudExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luKTsKLSAgICBTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZSogZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQpOworICAgIExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpOworICAgIFRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luKTsKKyAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSogZ2V0T3JDcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShTdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllcik7CiAKICAgICBSZWZQdHI8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyPiBtX2xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVu
aXF1ZV9wdHI8TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4gbV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2Vz
OwotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+LCBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlPj4g
bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IHN0ZDo6dW5pcXVlX3B0cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+IG1fc2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VzOworICAgIEhhc2hNYXA8U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX2xvY2FsU3RvcmFnZU5hbWVz
cGFjZXM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXM7
CisgICAgSGFzaE1hcDxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlPj4gbV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCmluZGV4
IGUwMTEwZWFhODA5YzVkNzYyODk5N2ZkMTZjNzU2ZmEzMDg1Mzc0YWYuLmMzMjc5NTk2OGY0NWU4
MmJmOGM2MDM5NjJmNjAyZGJmZTMyZjI4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmdldExvY2FsU3RvcmFn
ZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBHCiAgICAgfSk7CiB9CiAK
LXZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29u
bmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBTdG9y
YWdlTWFuYWdlclNldDo6Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5E
YXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMwNyw3ICszMDcsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUAogICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25u
ZWN0aW9uLnVuaXF1ZUlEKCkpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0
VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcExldmVsT3JpZ2luRGF0YSwgU2VjdXJpdHlPcmlnaW5EYXRh
JiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxT
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBT
ZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BMZXZlbE9yaWdpbkRhdGEsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIG9yaWdpbkRhdGEsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzMyLDcg
KzMzMiw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1RyYW5zaWVudExvY2Fs
U3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAgICAgc3RvcmFnZUFyZWEtPmFkZExp
c3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXJT
ZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlE
LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBvcmlnaW5EYXRhLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25u
ZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luRGF0YSwgQ29ubmVjdFRvU3Rv
cmFnZUFyZWFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
clNldDo6Y2xlYXIoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTdG9yYWdlQXJlYUlkZW50
aWZpZXIKICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRD
bGVhcihzdG9yYWdlTWFwU2VlZCksIHN0b3JhZ2VBcmVhSUQpOwogfQogCi12b2lkIFN0b3JhZ2VN
YW5hZ2VyU2V0OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgdG9TdG9yYWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0
OjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgZnJvbVN0b3JhZ2VO
YW1lc3BhY2VJRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNl
SUQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmgKaW5kZXggZDUzMDJiZTAzMmQ0ZWY4MWY5NzcwYjk1ZjYyNDJlZWE3YjQ1ZDdhOC4uZjEx
MTU0ZTNhNTQ5MGEzZWZmZGZlMTM2N2M0ZmE3YTVhMjQyNzZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmgKQEAgLTc2LDE1ICs3NiwxNSBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VNYW5hZ2VyU2V0
KCk7CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCi0gICAgdm9pZCBjb25uZWN0VG9Mb2NhbFN0
b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklEICwgdWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFy
ZWFDYWxsYmFjayYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFy
ZWEoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgLCB1aW50NjRfdCBzdG9yYWdlTmFt
ZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29u
bmVjdFRvU3RvcmFnZUFyZWFDYWxsYmFjayYmKTsKLSAgICB2b2lkIGNvbm5lY3RUb1Nlc3Npb25T
dG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qgc3Rv
cmFnZU5hbWVzcGFjZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFy
ZWFDYWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpD
b25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQgLCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbm5lY3RUb1N0b3JhZ2VBcmVhQ2FsbGJhY2smJik7Cisg
ICAgdm9pZCBjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlv
biYsIFBBTDo6U2Vzc2lvbklEICwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29ubmVjdFRvU3RvcmFnZUFyZWFD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJUEM6OkNv
bm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIsIFNl
Y3VyaXR5T3JpZ2luRGF0YSYmLCBDb25uZWN0VG9TdG9yYWdlQXJlYUNhbGxiYWNrJiYpOwogICAg
IHZvaWQgZGlzY29ubmVjdEZyb21TdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mLCBTdG9yYWdl
QXJlYUlkZW50aWZpZXIpOwogICAgIHZvaWQgZ2V0VmFsdWVzKElQQzo6Q29ubmVjdGlvbiYsIFN0
b3JhZ2VBcmVhSWRlbnRpZmllciwgR2V0VmFsdWVzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRJ
dGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3RvcmFnZUFyZWFJ
bXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAgICAgdm9p
ZCByZW1vdmVJdGVtKElQQzo6Q29ubmVjdGlvbiYsIFN0b3JhZ2VBcmVhSWRlbnRpZmllciwgU3Rv
cmFnZUFyZWFJbXBsSWRlbnRpZmllciwgdWludDY0X3Qgc3RvcmFnZU1hcFNlZWQsIGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAgICAgdm9pZCBjbGVhcihJUEM6
OkNvbm5lY3Rpb24mLCBTdG9yYWdlQXJlYUlkZW50aWZpZXIsIFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXIsIHVpbnQ2NF90IHN0b3JhZ2VNYXBTZWVkLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7
Ci0gICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYs
IFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRf
dCB0b1N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgdm9pZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllciBmcm9tU3RvcmFnZU5hbWVzcGFjZUlELCBTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllciB0b1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VNYW5hZ2VyczsKICAg
ICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1fc3RvcmFnZU1hbmFnZXJQYXRoczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5tZXNzYWdlcy5pbgppbmRleCAzNjA1YzdkNzM1
YjNjNDMzNzkyODRlODNkNmZkOGNjYTE3YTIzYWVkLi40ZWI5Y2JjOWJiYmZmMmEwMGQxMjdjNmEy
ZmFmZDVkZTNlNGFmNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0Lm1lc3NhZ2Vz
LmluCkBAIC0yMSwxMiArMjEsMTIgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gU3Rv
cmFnZU1hbmFnZXJTZXQgewotICAgIENvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhKSAtPiAoT3B0aW9uYWw8
V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXI+IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3Vz
IFdhbnRzQ29ubmVjdGlvbgotICAgIENvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxTZWN1cml0eU9yaWdpbkRh
dGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRh
KSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXI+IHN0b3JhZ2VBcmVh
SUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgotICAgIENvbm5lY3RUb1Nlc3Npb25TdG9y
YWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRh
dGEpIC0+IChPcHRpb25hbDxXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllcj4gc3RvcmFnZUFy
ZWFJRCkgU3luY2hyb25vdXMgV2FudHNDb25uZWN0aW9uCisgICAgQ29ubmVjdFRvTG9jYWxTdG9y
YWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdlYktpdDo6U3RvcmFn
ZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KKyAgICBDb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzdG9yYWdlTmFt
ZXNwYWNlSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgdG9wTGV2ZWxTZWN1
cml0eU9yaWdpbkRhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJp
dHlPcmlnaW5EYXRhKSAtPiAoT3B0aW9uYWw8V2ViS2l0OjpTdG9yYWdlQXJlYUlkZW50aWZpZXI+
IHN0b3JhZ2VBcmVhSUQpIFN5bmNocm9ub3VzIFdhbnRzQ29ubmVjdGlvbgorICAgIENvbm5lY3RU
b1Nlc3Npb25TdG9yYWdlQXJlYShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6U3Rv
cmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YSkgLT4gKE9wdGlvbmFsPFdl
YktpdDo6U3RvcmFnZUFyZWFJZGVudGlmaWVyPiBzdG9yYWdlQXJlYUlEKSBTeW5jaHJvbm91cyBX
YW50c0Nvbm5lY3Rpb24KICAgICBEaXNjb25uZWN0RnJvbVN0b3JhZ2VBcmVhKFdlYktpdDo6U3Rv
cmFnZUFyZWFJZGVudGlmaWVyIHN0b3JhZ2VBcmVhSUQpIFdhbnRzQ29ubmVjdGlvbgogICAgIEdl
dFZhbHVlcyhXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBzdG9yYWdlQXJlYUlEKSAtPiAo
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdmFsdWVzKSBTeW5jaHJvbm91cyBXYW50c0Nvbm5lY3Rp
b24KLSAgICBDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgZnJvbVN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgdG9TdG9yYWdl
TmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgorICAgIENsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OlN0b3JhZ2VOYW1lc3BhY2VJ
ZGVudGlmaWVyIGZyb21TdG9yYWdlTmFtZXNwYWNlSUQsIFdlYktpdDo6U3RvcmFnZU5hbWVzcGFj
ZUlkZW50aWZpZXIgdG9TdG9yYWdlTmFtZXNwYWNlSUQpIFdhbnRzQ29ubmVjdGlvbgogCiAgICAg
U2V0SXRlbShXZWJLaXQ6OlN0b3JhZ2VBcmVhSWRlbnRpZmllciBzdG9yYWdlQXJlYUlELCBXZWJL
aXQ6OlN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXIgc3RvcmFnZUFyZWFJbXBsSUQsIHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkLCBTdHJpbmcga2V5LCBTdHJpbmcgdmFsdWUsIFN0cmluZyB1cmxTdHJp
bmcpIFdhbnRzQ29ubmVjdGlvbgogICAgIFJlbW92ZUl0ZW0oV2ViS2l0OjpTdG9yYWdlQXJlYUlk
ZW50aWZpZXIgc3RvcmFnZUFyZWFJRCwgV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVy
IHN0b3JhZ2VBcmVhSW1wbElELCB1aW50NjRfdCBzdG9yYWdlTWFwU2VlZCwgU3RyaW5nIGtleSwg
U3RyaW5nIHVybFN0cmluZykgV2FudHNDb25uZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA0MzNlZmRiYzk3YjM3NzE2ZTJlMjc3NTczNDJlYTkxZGRk
ODhmN2ZhLi4wMTE1NmFmMTI3MWViYzVjYzBjZGNlZmM0MjY1YmE4YjNhZmIxNjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIxOSw2ICsyMTksNyBAQCBk
ZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdl
QXJlYUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpTdG9yYWdlQXJlYUltcGxJZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6U3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXInLAogICAg
ICAgICAnV2ViS2l0OjpVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJywKICAgICBdKQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2NWQ3NGQwMTA0NWE0NmQzYTIxMzY1NGMzOWFmYWRhZmNiZjY2ZjNjLi4wNGExOGMzNGJmZTJh
OWFhYjkyZWFlMDZiODcyZTQ5YmFhOTQ4Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwNiw2ICs5MDYsNyBAQAogCQk0NjNGRDQ4
MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNGRDQ4MTFFQjk0RUFEMDBB
Mjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi87IH07CiAJCTQ2NTdEODg5MjI2
NjRBMkQwMDVERTgyMyAvKiBXS09yaWVudGF0aW9uQWNjZXNzQWxlcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTdEODg3MjI2NjRBMTkwMDVERTgy
MyAvKiBXS09yaWVudGF0aW9uQWNjZXNzQWxlcnQuaCAqLzsgfTsKIAkJNDY1N0Q4OEEyMjY2NEEy
RjAwNURFODIzIC8qIFdLT3JpZW50YXRpb25BY2Nlc3NBbGVydC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTdEODg4MjI2NjRBMUEwMDVERTgyMyAv
KiBXS09yaWVudGF0aW9uQWNjZXNzQWxlcnQubW0gKi87IH07CisJCTQ2NUY0RTA2MjMwQjJFOTUw
MDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RjRFMDUyMzBCMkU3QzAwM0NFREI3IC8q
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggKi87IH07CiAJCTQ2NkJDMDNDMUZBMjY2REEw
MDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMx
IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0
M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAw
QjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CiAJCTQ2QTJC
NjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJC
NjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuaCAqLzsgfTsKQEAgLTMxOTAsNiArMzE5MSw3IEBACiAJCTQ2NTdEODg4MjI2NjRBMUEwMDVE
RTgyMyAvKiBXS09yaWVudGF0aW9uQWNjZXNzQWxlcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS09yaWVudGF0aW9uQWNjZXNzQWxlcnQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUY0RTAyMjMwNzU5RDUwMDNDRURCNyAvKiBTdG9yYWdl
QXJlYUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWFJZGVudGlmaWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUY0RTAzMjMwNzYwNEUwMDNDRURCNyAv
KiBTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVh
SW1wbElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1RjRFMDUy
MzBCMkU3QzAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NkJDMDM4MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NkJDMDM5MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjZCQzAzQTFG
QTI2NkM5MDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MTU4LDYgKzUxNjAs
NyBAQAogCQkJCTFBQ0VDRDIyMTcxNjJEQjEwMDFGQzlFRiAvKiBTdG9yYWdlQXJlYU1hcC5jcHAg
Ki8sCiAJCQkJMUFDRUNEMjMxNzE2MkRCMTAwMUZDOUVGIC8qIFN0b3JhZ2VBcmVhTWFwLmggKi8s
CiAJCQkJMUEzMzRERUExNkRFOEI2ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwLm1lc3NhZ2Vz
LmluICovLAorCQkJCTQ2NUY0RTA1MjMwQjJFN0MwMDNDRURCNyAvKiBTdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oICovLAogCQkJCTFBMTc2MzU0MTZCMUQ1RDAwMEQ4OEZENiAvKiBTdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAgKi8sCiAJCQkJMUExNzYzNTUxNkIxRDVEMDAwRDg4RkQ2IC8qIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsLmggKi8sCiAJCQkJMUE1MkMwRjUxQTM4Q0RDNzAwMTYxNjBBIC8q
IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgKi8sCkBAIC05NjgzLDYgKzk2ODYsNyBA
QAogCQkJCTkzQjI2MTREMjI3RDE0OUUwMEI5N0E3NiAvKiBTdG9yYWdlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1RjRFMDYyMzBC
MkU5NTAwM0NFREI3IC8qIFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUUwMEQ2QzE4MzI3QzEyMDAwODdERDcgLyogU3RyaW5nUmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyOTZCRDg1RDE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0ZEMzE4NjIyQjM1MTZDMDA4RDBFOEIgLyogU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCmluZGV4IGU0NTUyNjE4MGMwMWJiZDM1YWU1MjVlODI1YmQ3ZDRhY2ZkZjlhODIuLjY1
YzlmMjVkMmVlODgzNzgzN2QyNTQ3YzEyZWU2MWZjZmY4ZDFmYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcApAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vCiAKICAgICBQ
YWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmVuYWJsZUxlZ2Fj
eVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoZW5hYmxlZCk7CiAKLSAgICBhdXRvIHdlYlN0b3Jh
Z2VOYW1lU3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JD
cmVhdGUocGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAgICBhdXRvIHdlYlN0b3JhZ2VOYW1l
U3BhY2VQcm92aWRlciA9IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Z2V0T3JDcmVhdGUo
KnBhZ2VHcm91cCk7CiAgICAgd2ViU3RvcmFnZU5hbWVTcGFjZVByb3ZpZGVyLT5lbmFibGVMZWdh
Y3lQcml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGVuYWJsZWQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM0NTM3MDZkMzAyMGNhNTQ2
N2UyNDY2MTgyYWFjYWMxZmE1Njc4OWIuLmFkOTA2OTkwNzVjMDg2ZGI1NTY0NzViNjdlYTFlN2Q4
Y2JlMGUwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC00ODQsNyArNDg0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gJldlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24u
ZGF0YWJhc2VQcm92aWRlciA9IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKG1fcGFn
ZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wbHVnaW5JbmZv
UHJvdmlkZXIgPSAmV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpzaW5nbGV0b24oKTsKLSAgICBwYWdl
Q29uZmlndXJhdGlvbi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKG1fcGFnZUdyb3VwLT5wYWdlR3JvdXBJRCgpKTsKKyAg
ICBwYWdlQ29uZmlndXJhdGlvbi5zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBXZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKCptX3BhZ2VHcm91cCk7CiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24udXNlckNvbnRlbnRQcm92aWRlciA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LnB0cigpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rU3RvcmUgPSBWaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlcjo6Z2V0T3JDcmVhdGUocGFyYW1ldGVycy52aXNpdGVkTGlua1Rh
YmxlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggYzE3MjIyMDMyZmJhZjhhYWU5YzRhNGI1M2ZkYTUwZTA5ZWQ4MThjZS4uNDBjZWQ3NjRlMzA2
ZjE5ZTMwNjg0YmNlNjdjZWNkNjdmNjIwMDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZVNoZWV0Q2FsbGJhY2tJRC5oIgogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RQcm94
eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgpAQCAtMjkxLDYgKzI5Miw3IEBAIHB1
YmxpYzoKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlLmdldCgpOyB9CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllciBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtYWtlT2JqZWN0
SWRlbnRpZmllcjxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllclR5cGU+KG1fcGFnZUlELnRvVUlu
dDY0KCkpOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlLT5zZXNzaW9uSUQoKTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBj
b25zdCB7IHJldHVybiBtX3BhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmgK
aW5kZXggYmU5ZGYwMWRmYzMyZjYyOTAzY2NhMjlmNWM4NjA1MTNiOTA1NDUwMi4uYmQ0ZDQyOTAx
ZGVkZTE0ZGJiZmI0ZTM1YjhlZDExOWQ5NjlmMDc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIlN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApAQCAtNDQsNiArNDUsNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaWRlbnRp
ZmllcjsgfQogICAgIHVpbnQ2NF90IHBhZ2VHcm91cElEKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LnBhZ2VHcm91cElEOyB9CisgICAgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIgbG9jYWxTdG9y
YWdlTmFtZXNwYWNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlm
aWVyPFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyVHlwZT4ocGFnZUdyb3VwSUQoKSk7IH0KICAg
ICBXZWJDb3JlOjpQYWdlR3JvdXAqIGNvcmVQYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VHcm91cDsgfQogCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyJiB1c2VyQ29udGVudENv
bnRyb2xsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYzIxZTcxOWY2MmU0M2Y3MzA0ZDExNDJlODc1
MDFiZmRhOGZkY2I5Li5iNTI1YzMyMTE5Njg5ZTgwOGMwMDFmNzUyMjY1MWI5MmQ2ODI2ZDRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KGNvbnN0IE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbEkK
IHsKICAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBh
cmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSBy
aWdodCBwYWdlIGhlcmUuCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPiht
X3N0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpKSk7CisgICAgV2ViUGFnZSog
d2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9zdG9yYWdlTmFtZXNw
YWNlLT5zZXNzaW9uU3RvcmFnZVBhZ2VJRCgpKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3Bh
dGNoTG9jYWxTdG9yYWdlRXZlbnQoY29uc3QgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlCiAg
ICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4+IGZyYW1lczsKIAogICAgIC8vIE5hbWVzcGFjZSBJRHMg
Zm9yIGxvY2FsIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBn
cm91cCBJRHMuCi0gICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAgPSAqV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZUdyb3VwKG1fc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZU5hbWVzcGFjZUlE
KCkpLT5jb3JlUGFnZUdyb3VwKCk7CisgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAgPSAqV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZUdyb3VwKG1fc3RvcmFnZU5hbWVzcGFjZS0+cGFnZUdy
b3VwSUQoKSktPmNvcmVQYWdlR3JvdXAoKTsKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFn
ZXMgPSBwYWdlR3JvdXAucGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCksIGVuZCA9IHBhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmKCppdCktPm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTVjZWI0NDc3M2JlYzBlY2U0NzVi
ZmMwNGRkZGZhZmRiYmQ0M2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaApAQCAtMCwwICsx
LDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0
SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBTdG9yYWdlTmFtZXNw
YWNlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIg
PSBPYmplY3RJZGVudGlmaWVyPFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyVHlwZT47CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCAxMTQ1ZDljNTE1NTgyM2M4ZTY0Yzc2NTY2OTc0
NWE2ZTQyNGFjNTAzLi41YmQ4MDI3MjU1OTNiZTYxODU2ZjY0ZjdmNGI4MTYzOTEzNzlmYmQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MiwyMiArNDIsMjIgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzLCBzZXNzaW9uSUQpKTsK
IH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNl
KElkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVz
cGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUlu
Qnl0ZXMsIHNlc3Npb25JRCkpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2lu
LCB1aW50NjRfdCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK1JlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVu
dExvY2FsU3RvcmFnZU5hbWVzcGFjZShJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCAm
dG9wTGV2ZWxPcmlnaW4sIHF1b3RhSW5CeXRlcywgc2Vzc2lvbklEKSk7CiB9CiAKLVN0b3JhZ2VO
YW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBz
dG9yYWdlVHlwZSwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4sIHVuc2lnbmVkIHF1b3RhSW5CeXRlcywgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICA6IG1fc3Rv
cmFnZVR5cGUoc3RvcmFnZVR5cGUpCiAgICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRChzdG9yYWdl
TmFtZXNwYWNlSUQpCiAgICAgLCBtX3RvcExldmVsT3JpZ2luKHRvcExldmVsT3JpZ2luKQpAQCAt
OTMsMTEgKzkzLDEyIEBAIFJlZjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0
b3JhZ2VBcmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjCiBSZWY8U3RvcmFnZU5hbWVz
cGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3UGFnZSkKIHsKICAgICBB
U1NFUlQobV9zdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09
IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKTsKIAogICAgIGlmIChhdXRvIG5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKG5ld1BhZ2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgV2Vi
UGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpKSwgMCk7Cisg
ICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VNYW5hZ2VyU2V0OjpDbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG5ld1Bh
Z2UtPnNlc3Npb25JRCgpLCBtX3N0b3JhZ2VOYW1lc3BhY2VJRCwgV2ViUGFnZTo6ZnJvbUNvcmVQ
YWdlKG5ld1BhZ2UpLT5zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIoKSksIDApOwog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdl
VHlwZSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgp
LCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3RhSW5CeXRlcywgbmV3UGFnZS0+c2Vzc2lv
bklEKCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbCht
X3N0b3JhZ2VUeXBlLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UobmV3UGFnZSktPnNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlSWRlbnRpZmllcigpLCBtX3RvcExldmVsT3JpZ2luLmdldCgpLCBtX3F1b3Rh
SW5CeXRlcywgbmV3UGFnZS0+c2Vzc2lvbklEKCkpKTsKIH0KIAogdm9pZCBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6c2V0U2Vzc2lvbklERm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CkBAIC0xMDcsNCArMTA4LDE2IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnNldFNlc3Np
b25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICBzdG9yYWdl
QXJlYU1hcC0+ZGlzY29ubmVjdCgpOwogfQogCitQYWdlSWRlbnRpZmllciBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6c2Vzc2lvblN0b3JhZ2VQYWdlSUQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3N0
b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKTsKKyAgICByZXR1cm4gbWFrZU9iamVj
dElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRC50b1VJ
bnQ2NCgpKTsKK30KKwordWludDY0X3QgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnBhZ2VHcm91cElE
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6TG9j
YWwgfHwgbV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwpOworICAg
IHJldHVybiBtX3N0b3JhZ2VOYW1lc3BhY2VJRC50b1VJbnQ2NCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDgxOTgyZWY1ZDBiODExM2Y0MTQw
MjZhNDM3ZTEzMjYyYmExZTk4MTEuLjljZWY0NDVhZWNmMzUxOThlNWJiNTg2Mjg3ZTM3OWIzMDZk
OTlkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KQEAgLTQw
LDE0ICs0MSwxOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1w
bCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMsIFBBTDo6U2Vzc2lv
bklEKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
LCBQQUw6OlNlc3Npb25JRCk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJ
bkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdXNpbmcgSWRlbnRpZmllciA9IFN0b3JhZ2VO
YW1lc3BhY2VJZGVudGlmaWVyOworCisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKElkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcywgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdmlydHVhbCB+U3RvcmFnZU5hbWVz
cGFjZUltcGwoKTsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9yYWdlVHlwZTsgfQotICAgIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZU5hbWVzcGFjZUlEOyB9CisgICAgSWRlbnRp
ZmllciBzdG9yYWdlTmFtZXNwYWNlSUQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VOYW1lc3Bh
Y2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHNlc3Npb25TdG9yYWdlUGFnZUlE
KCkgY29uc3Q7CisgICAgdWludDY0X3QgcGFnZUdyb3VwSUQoKSBjb25zdDsKICAgICBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiogdG9wTGV2ZWxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3RvcExl
dmVsT3JpZ2luLmdldCgpOyB9CiAgICAgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9xdW90YUluQnl0ZXM7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpAQCAtNTcsMTMgKzYyLDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25JREZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgU3RvcmFnZU5hbWVzcGFjZUltcGwoV2ViQ29yZTo6U3Rv
cmFnZVR5cGUsIElkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZWY8
V2ViQ29yZTo6U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgb25seSB2YWxp
ZCBmb3Igc2Vzc2lvbiBzdG9yYWdlIGFuZCBzaG91bGQgcHJvYmFibHkgYmUgbW92ZWQgdG8gYSBz
dWJjbGFzcy4KICAgICBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0
b3JhZ2VUeXBlOwotICAgIGNvbnN0IHVpbnQ2NF90IG1fc3RvcmFnZU5hbWVzcGFjZUlEOworICAg
IGNvbnN0IElkZW50aWZpZXIgbV9zdG9yYWdlTmFtZXNwYWNlSUQ7CiAKICAgICAvLyBPbmx5IHVz
ZWQgZm9yIHRyYW5zaWVudCBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMuCiAgICAgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBtX3RvcExldmVsT3JpZ2luOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKaW5kZXggOWU3MjE2MzFiM2I0YmQ3MmVjMDMzZTc5
YmFlMGQzNzUyNTRiYWMwNC4uMzAwY2NmMDc4M2FiMTk5MzFiZDNkMTQ3YTk5ZmMyNWE1ZGRlMWE1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCkBAIC0yOCw1NiArMjgs
NTUgQEAKIAogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIEhhc2hNYXA8dWludDY0
X3QsIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcio+JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXJzKCkKK3N0YXRpYyBIYXNoTWFwPFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIqPiYgc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlcio+PiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBXZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIqPj4gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyczsKIAogICAg
IHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzOwogfQogCi1SZWY8V2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRl
KHVpbnQ2NF90IGlkZW50aWZpZXIpCitSZWY8V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyPiBX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmdldE9yQ3JlYXRlKFdlYlBhZ2VHcm91cFByb3h5
JiBwYWdlR3JvdXApCiB7Ci0gICAgYXV0byYgc2xvdCA9IHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwotICAgIGlmIChz
bG90KQotICAgICAgICByZXR1cm4gKnNsb3Q7Ci0KLSAgICBhdXRvIHN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKGlkZW50
aWZpZXIpKTsKLSAgICBzbG90ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLnB0cigpOwotCi0g
ICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKKyAgICBSZWZQdHI8V2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CisgICAgYXV0byog
cmVzdWx0ID0gc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmVuc3VyZShwYWdlR3JvdXAubG9j
YWxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcigpLCBbJl0oKSB7CisgICAgICAgIHN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlciA9IGFkb3B0UmVmKCpuZXcgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3Zp
ZGVyKHBhZ2VHcm91cC5sb2NhbFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKCkpKTsKKyAgICAg
ICAgcmV0dXJuIHN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5nZXQoKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CisgICAgcmV0dXJuICpyZXN1bHQ7CiB9CiAKLVdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
Ci0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlcjo6V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlm
aWVyIGxvY2FsU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIpCisgICAgOiBtX2xvY2FsU3RvcmFn
ZU5hbWVzcGFjZUlkZW50aWZpZXIobG9jYWxTdG9yYWdlTmFtZXNwYWNlSWRlbnRpZmllcikKIHsK
IH0KIAogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjp+V2ViU3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKCkKIHsKLSAgICBBU1NFUlQoc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLmNvbnRh
aW5zKG1faWRlbnRpZmllcikpOworICAgIEFTU0VSVChzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJz
KCkuY29udGFpbnMobV9sb2NhbFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyKSk7CiAKLSAgICBz
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgc3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVycygpLnJlbW92ZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZUlk
ZW50aWZpZXIpOwogfQogCiBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBw
YWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFn
ZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIHF1b3RhLCBwYWdlLnNlc3Npb25JRCgpKTsKKyAgICBy
ZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnNlc3Npb25TdG9yYWdlTmFtZXNwYWNlSWRl
bnRpZmllcigpLCBxdW90YSwgcGFnZS5zZXNzaW9uSUQoKSk7CiB9CiAKIFJlZjxXZWJDb3JlOjpT
dG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZUxvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKG1faWRlbnRpZmllciwgcXVvdGEsIHNlc3Npb25JRCk7CisgICAgcmV0dXJuIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UobV9sb2NhbFN0
b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogUmVmPFdl
YkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3Jl
YXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
JiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVvdGEsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShtX2lkZW50aWZpZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSwg
c2Vzc2lvbklEKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVRyYW5z
aWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZp
ZXIsIHRvcExldmVsT3JpZ2luLCBxdW90YSwgc2Vzc2lvbklEKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9y
YWdlTmFtZXNwYWNlUHJvdmlkZXIuaAppbmRleCAyMmU0MmY1MjBkYWNhM2RmNjljNWE4NjA1NjZm
ZjRhNzcwMWRmNmMxLi5iYzk2NTRjYTE3MTYzYjJmMGMzNDk4ZjE2ZDk2NjY3ZWM1YTQwZTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9XZWJTdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApAQCAtMjUsMjMgKzI1LDI2IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU3RvcmFnZU5hbWVzcGFjZUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZUdyb3VwUHJveHk7CisKIGNsYXNzIFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViU3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyPiBnZXRPckNyZWF0ZSh1aW50NjRfdCBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMg
UmVmPFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcj4gZ2V0T3JDcmVhdGUoV2ViUGFnZUdyb3Vw
UHJveHkmKTsKICAgICB2aXJ0dWFsIH5XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKTsKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIodWludDY0
X3QgaWRlbnRpZmllcik7CisgICAgZXhwbGljaXQgV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
KFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIGxvY2FsU3RvcmFnZUlkZW50aWZpZXIpOwogCiAg
ICAgUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYkNvcmU6OlBhZ2UmLCB1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7CiAgICAgUmVm
PFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1
bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogICAgIFJlZjxXZWJDb3Jl
OjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSwgUEFMOjpTZXNzaW9uSUQp
IG92ZXJyaWRlOwogCi0gICAgY29uc3QgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAgIGNvbnN0
IFN0b3JhZ2VOYW1lc3BhY2VJZGVudGlmaWVyIG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlSWRlbnRp
ZmllcjsKIH07CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>