<?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>77444</bug_id>
          
          <creation_ts>2012-01-31 09:05:23 -0800</creation_ts>
          <short_desc>Web Inspector: CodeGeneratorInspector.py: switch domain agents to formal interfaces in BackendDispatcher</short_desc>
          <delta_ts>2012-02-06 00:05:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72861</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>pnormand</cc>
    
    <cc>prybin</cc>
    
    <cc>rik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546128</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-01-31 09:05:23 -0800</bug_when>
    <thetext>Formal interfaces for domain agents are already prepared in BackendDispatcher.
It&apos;s time agents actually implemented them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546151</commentid>
    <comment_count>1</comment_count>
      <attachid>124758</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-01-31 09:17:07 -0800</bug_when>
    <thetext>Created attachment 124758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546156</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 09:20:12 -0800</bug_when>
    <thetext>Attachment 124758 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546170</commentid>
    <comment_count>3</comment_count>
      <attachid>124761</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-01-31 09:41:16 -0800</bug_when>
    <thetext>Created attachment 124761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546173</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 09:46:03 -0800</bug_when>
    <thetext>Attachment 124761 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546175</commentid>
    <comment_count>5</comment_count>
      <attachid>124762</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-01-31 09:48:32 -0800</bug_when>
    <thetext>Created attachment 124762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546176</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 09:53:22 -0800</bug_when>
    <thetext>Attachment 124762 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546199</commentid>
    <comment_count>7</comment_count>
      <attachid>124762</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-31 10:20:32 -0800</bug_when>
    <thetext>Comment on attachment 124762
Patch

Attachment 124762 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11386020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546215</commentid>
    <comment_count>8</comment_count>
      <attachid>124762</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 10:36:42 -0800</bug_when>
    <thetext>Comment on attachment 124762
Patch

Attachment 124762 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11394010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546269</commentid>
    <comment_count>9</comment_count>
      <attachid>124762</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-31 11:13:48 -0800</bug_when>
    <thetext>Comment on attachment 124762
Patch

Attachment 124762 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11388040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546388</commentid>
    <comment_count>10</comment_count>
      <attachid>124762</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-31 12:45:37 -0800</bug_when>
    <thetext>Comment on attachment 124762
Patch

Attachment 124762 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11394067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546462</commentid>
    <comment_count>11</comment_count>
      <attachid>124815</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-01-31 13:52:24 -0800</bug_when>
    <thetext>Created attachment 124815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546469</commentid>
    <comment_count>12</comment_count>
      <attachid>124815</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-31 14:01:22 -0800</bug_when>
    <thetext>Comment on attachment 124815
Patch

Attachment 124815 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11388128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546498</commentid>
    <comment_count>13</comment_count>
      <attachid>124815</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-31 14:27:23 -0800</bug_when>
    <thetext>Comment on attachment 124815
Patch

Attachment 124815 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11387144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546501</commentid>
    <comment_count>14</comment_count>
      <attachid>124815</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 14:29:22 -0800</bug_when>
    <thetext>Comment on attachment 124815
Patch

Attachment 124815 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11394117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546523</commentid>
    <comment_count>15</comment_count>
      <attachid>124828</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-01-31 14:53:27 -0800</bug_when>
    <thetext>Created attachment 124828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547168</commentid>
    <comment_count>16</comment_count>
      <attachid>124964</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-01 10:20:06 -0800</bug_when>
    <thetext>Created attachment 124964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547265</commentid>
    <comment_count>17</comment_count>
      <attachid>124984</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-01 12:09:33 -0800</bug_when>
    <thetext>Created attachment 124984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548700</commentid>
    <comment_count>18</comment_count>
      <attachid>124984</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-03 07:34:12 -0800</bug_when>
    <thetext>Comment on attachment 124984
Patch

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

Looks good, but please add virtual to the methods that became virtual.

&gt; Source/WebCore/inspector/InspectorCSSAgent.h:80
&gt; +    void getMatchedStylesForNode(ErrorString*, int nodeId, const RefPtr&lt;InspectorArray&gt;* forcedPseudoClasses, const bool* includePseudo, const bool* includeInherited, RefPtr&lt;InspectorArray&gt;&amp; matchedCSSRules, RefPtr&lt;InspectorArray&gt;&amp; pseudoIdRules, RefPtr&lt;InspectorArray&gt;&amp; inheritedEntries);

We usually keep virtual keywords for overridden virtual methods even though C++ doesn&apos;t require this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549614</commentid>
    <comment_count>19</comment_count>
      <attachid>125535</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-05 14:09:11 -0800</bug_when>
    <thetext>Created attachment 125535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549616</commentid>
    <comment_count>20</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2012-02-05 14:13:22 -0800</bug_when>
    <thetext>&gt; We usually keep virtual keywords for overridden virtual methods even though C++ doesn&apos;t require this.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549766</commentid>
    <comment_count>21</comment_count>
      <attachid>125535</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-05 23:39:56 -0800</bug_when>
    <thetext>Comment on attachment 125535
Patch

Clearing flags on attachment: 125535

Committed r106777: &lt;http://trac.webkit.org/changeset/106777&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549767</commentid>
    <comment_count>22</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-05 23:40:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549779</commentid>
    <comment_count>23</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-06 00:01:38 -0800</bug_when>
    <thetext>Qt minimal build failed: http://build.webkit.org/builders/Qt%20Linux%20Release%20minimal/builds/41992/steps/compile-webkit/logs/stdio

I&apos;ll land a fix shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549780</commentid>
    <comment_count>24</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-06 00:05:21 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Qt minimal build failed: http://build.webkit.org/builders/Qt%20Linux%20Release%20minimal/builds/41992/steps/compile-webkit/logs/stdio
&gt; 
&gt; I&apos;ll land a fix shortly.
Fixed: http://trac.webkit.org/changeset/106780</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124758</attachid>
            <date>2012-01-31 09:17:07 -0800</date>
            <delta_ts>2012-01-31 09:41:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120131211705.patch</filename>
            <type>text/plain</type>
            <size>32803</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlOTdjMTU3OTllZmZl
N2JjNWVmMDg3YTgzODM5ZTcxMjRlNzJjMi4uMTUyMDg1YmM2YjY3NmFkOWI3ZTM5OTk4OWJkYzRk
Zjg1NDJiNzNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMS0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Bl
Y3VsYXRpdmUgMzItYml0IGJ1aWxkLWZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKaW5kZXggNGQ0ZDY1NDMxY2UzY2UzZWQzOGFk
YmExODA3ZGVlMTViNjg0Nzg4My4uYjUzOTRmNzFlMjQ0OWNlODJkYjM4ODFiMGYxNjI5MzRjNDc2
N2ZlNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJ
bnNwZWN0b3IucHkKQEAgLTE1MywxNSArMTUzLDkgQEAgVkFMSURBVE9SX0lGREVGX05BTUUgPSAi
IUFTU0VSVF9ESVNBQkxFRCIKIGNsYXNzIERvbWFpbk5hbWVGaXhlczoKICAgICBAY2xhc3NtZXRo
b2QKICAgICBkZWYgZ2V0X2ZpeGVkX2RhdGEoY2xzLCBkb21haW5fbmFtZSk6Ci0gICAgICAgIGlm
IGRvbWFpbl9uYW1lIGluIGNscy5hZ2VudF90eXBlX21hcDoKLSAgICAgICAgICAgIGFnZW50X25h
bWVfcmVzID0gY2xzLmFnZW50X3R5cGVfbWFwW2RvbWFpbl9uYW1lXQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSAiSW5zcGVjdG9yJXNBZ2VudCIgJSBkb21haW5f
bmFtZQotCiAgICAgICAgIGZpZWxkX25hbWVfcmVzID0gQ2FwaXRhbGl6ZXIudXBwZXJfY2FtZWxf
Y2FzZV90b19sb3dlcihkb21haW5fbmFtZSkgKyAiQWdlbnQiCiAKICAgICAgICAgY2xhc3MgUmVz
KG9iamVjdCk6Ci0gICAgICAgICAgICBhZ2VudF90eXBlX25hbWUgPSBhZ2VudF9uYW1lX3Jlcwog
ICAgICAgICAgICAgc2tpcF9qc19iaW5kID0gZG9tYWluX25hbWUgaW4gY2xzLnNraXBfanNfYmlu
ZF9kb21haW5zCiAgICAgICAgICAgICBhZ2VudF9maWVsZF9uYW1lID0gZmllbGRfbmFtZV9yZXMK
IApAQCAtMTg0LDcgKzE3OCw2IEBAIGNsYXNzIERvbWFpbk5hbWVGaXhlczoKICAgICAgICAgcmV0
dXJuIFJlcwogCiAgICAgc2tpcF9qc19iaW5kX2RvbWFpbnMgPSBzZXQoWyJSdW50aW1lIiwgIkRP
TURlYnVnZ2VyIl0pCi0gICAgYWdlbnRfdHlwZV9tYXAgPSB7Ik5ldHdvcmsiOiAiSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCIsICJJbnNwZWN0b3IiOiAiSW5zcGVjdG9yQWdlbnQiLCB9CiAKIAogY2xh
c3MgQ1BhcmFtVHlwZShvYmplY3QpOgpAQCAtMjM4MSwxMCArMjM3NCwxMSBAQCBjbGFzcyBHZW5l
cmF0b3I6CiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZhY2VfbmFtZSA9IENhcGl0YWxpemVyLmxv
d2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkNvbW1hbmRIYW5kbGVyIgog
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCIgICAgY2xhc3MgJXMge1xuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKQogICAgICAgICAgICAg
R2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgcHVibGlj
OlxuIikKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0
LmFwcGVuZCgiICAgICAgICB2aXJ0dWFsIH4lcygpIHsgfVxuIiAlIGFnZW50X2ludGVyZmFjZV9u
YW1lKTsKICAgICAgICAgICAgIGlmICJjb21tYW5kcyIgaW4ganNvbl9kb21haW46CiAgICAgICAg
ICAgICAgICAgZm9yIGpzb25fY29tbWFuZCBpbiBqc29uX2RvbWFpblsiY29tbWFuZHMiXToKICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLnByb2Nlc3NfY29tbWFuZChqc29uX2NvbW1hbmQs
IGRvbWFpbl9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCJcbiAgICBwcm90ZWN0ZWQ6XG4iKQor
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCIgICAgICAgIHZpcnR1YWwgfiVzKCkgeyB9XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCiAg
ICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQo
IiAgICB9O1xuXG4iKQogCiAgICAgICAgICAgICBpZiBkb21haW5fZ3VhcmQ6CkBAIC0yNDE1LDE0
ICsyNDA5LDExIEBAIGNsYXNzIEdlbmVyYXRvcjoKIAogICAgICAgICAgICAgYWdlbnRfaW50ZXJm
YWNlX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGRvbWFpbl9u
YW1lKSArICJDb21tYW5kSGFuZGxlciIKIAotICAgICAgICAgICAgYWdlbnRfdHlwZV9uYW1lID0g
ZG9tYWluX2ZpeGVzLmFnZW50X3R5cGVfbmFtZQogICAgICAgICAgICAgYWdlbnRfZmllbGRfbmFt
ZSA9IGRvbWFpbl9maXhlcy5hZ2VudF9maWVsZF9uYW1lCiAgICAgICAgICAgICBHZW5lcmF0b3Iu
YmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QuYXBwZW5kKCIgICAgICAgICwgbV8lcygwKSIg
JSBhZ2VudF9maWVsZF9uYW1lKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVh
bF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMg
LyogJXMgKi8qICVzKSA9IDA7IiAlIChhZ2VudF90eXBlX25hbWUsIGFnZW50X2ludGVyZmFjZV9u
YW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3Nl
dHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMgLyogJXMgKi8qICVz
KSB7IEFTU0VSVCghbV8lcyk7IG1fJXMgPSAlczsgfSIgJSAoYWdlbnRfdHlwZV9uYW1lLCBhZ2Vu
dF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdl
bnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBHZW5lcmF0b3Iu
YmFja2VuZF9maWVsZF9saXN0LmFwcGVuZCgiICAgICVzIC8qICVzICovKiBtXyVzOyIgJSAoYWdl
bnRfdHlwZV9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0g
ICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJkX2xpc3QuYXBwZW5kKCJjbGFzcyAl
czsiICUgYWdlbnRfdHlwZV9uYW1lKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfaW5j
bHVkZV9saXN0LmFwcGVuZCgiI2luY2x1ZGUgXCIlcy5oXCIiICUgYWdlbnRfdHlwZV9uYW1lKQor
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVhbF9zZXR0ZXJzX2xpc3QuYXBwZW5k
KCIgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMqICVzKSA9IDA7IiAlIChhZ2VudF9p
bnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0b3Iu
YmFja2VuZF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdm9pZCByZWdpc3RlckFnZW50KCVzKiAl
cykgeyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFnZW50X2ludGVyZmFjZV9uYW1l
LCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBh
Z2VudF9maWVsZF9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xp
c3QuYXBwZW5kKCIgICAgJXMqIG1fJXM7IiAlIChhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRf
ZmllbGRfbmFtZSkpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAgICAgICAg
ICAgICBmb3IgbCBpbiByZXZlcnNlZChzb3J0ZWRfY3ljbGVfZ3VhcmRhYmxlX2xpc3RfbGlzdCk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCmluZGV4IGY3YzhlNDhj
MjQ2NGIyNGYzY2M1ZWEwYjFiY2VlNGM0OTQ3ZmJmZDMuLmEzOGJlMjFlZTY5MDliOGQzMzU0MWM5
MGFiNDc3YmY5YmI3MDAzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEluc3BlY3RvckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JBZ2VudD4gY3JlYXRlKFBhZ2UqIHBhZ2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggYWMw
OTI5NzU5OTMyOGY1NDdlZTU3MTM0OGM0Y2RkMDViNmQyNzQ2ZC4uNDU4ZGIzYmY1YjE4Yjk1OTM3
ZDIyZDExODk0ZjMyNmVmNDE1MGQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+IHsKK2NsYXNzIElu
c3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpBcHBsaWNhdGlvbkNhY2hlQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcAppbmRleCBiMWE1OWEzOTRiNDdkYjUzNjMyODgyNTU5MWE0NmExMzE3YzI0NTBjLi43Yzgx
MDhkYjJkMWU4OTI1ZWNlMDYxNWQ3NmI3ODc0YmE1ZDRiODBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZWNhbGNTdHlsZUZvclBzZXVkb1N0YXRlSWZOZWVkZWQo
RWxlbWVudCogZWxlbWVudCwgSW5zcAogICAgICAgICBlbGVtZW50LT5vd25lckRvY3VtZW50KCkt
PnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZv
cmNlZFBzZXVkb0NsYXNzZXMsIGJvb2wqIG5lZWRQc2V1ZG8sIGJvb2wqIG5lZWRJbmhlcml0ZWQs
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgcHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaW5oZXJpdGVk
RW50cmllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2Rl
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29uc3QgYm9vbCogbmVlZFBzZXVkbywg
Y29uc3QgYm9vbCogbmVlZEluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0Y2hl
ZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKQogewogICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA3
MGIyZGQ5MGE0Mzc0ZWIwYzgyZDc2NzlmNzg5YWJhMmRjYjliNWU5Li42OGRhYzc5NjUzYTczMjI1
NzRkM2Y4MTRlYjQ1NGNkZDBjMzY0NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBTZWxlY3RvclByb2Zp
bGU7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ1NTQWdlbnQ+LCBwdWJsaWMgSW5z
cGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvckNTU0FnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NBZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6Q1NTQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckNTU0FnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0
eWxlUnVsZShDU1NSdWxlKik7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+JiBzdHlsZSk7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGlubGluZVN0eWxl
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhdHRyaWJ1dGVzKTsKLSAgICB2b2lkIGdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgYm9vbCogaW5jbHVkZVBzZXVkbywg
Ym9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENT
U1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAgICB2b2lkIGdldE1hdGNoZWRTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywg
Y29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0
Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKTsKICAgICB2b2lkIGdldEFsbFN0
eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3R5bGVTaGVl
dEluZm9zKTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CiAgICAg
dm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzEyM2JlODBjN2ZiNDA4ZWU4ODVkODQ3OGIx
NTE2N2IwZGI1NWFhZC4uZjJiZWJkMjM1MGNkMzY4OTk0ZTA2MTNjYTU3NmJjN2NiMTdmYzEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ29uc29s
ZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDb25zb2xlQ29tbWFu
ZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCk7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMjhjMGYzYjdk
MDE5OTc5N2YxMTYxOTI1NTBmNGRjYjc3MGNjYTUzMS4uYWIzYjQ5ZDNiODg3MDE2YTUxNjdlM2Mx
MTQwNTU4NTY4YTlkY2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC05NzUsNyArOTc1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBp
bnQKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoCiAgICAgRXJyb3JTdHJp
bmcqLAogICAgIGludCBub2RlSWQsCi0gICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
aGlnaGxpZ2h0Q29uZmlnKQorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdo
bGlnaHRDb25maWcpCiB7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkg
ewogICAgICAgICBpZiAoc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmln
LmdldCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aAppbmRleCAwMWM0OWRjY2M4MDVmMTI1NzE3ZGYxY2ZhYmVhMjBmN2VlNmNmZGY1Li5hNDYwZGMy
NzdhYjA3NGNhMDFkNTU3YjJmYTkxNDQ2M2M3ZmUwYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXZl
bnRMaXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0
ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01BZ2VudD4geworY2xhc3MgSW5zcGVjdG9yRE9NQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTUFnZW50PiwgcHVibGlj
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01Db21tYW5kSGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQpOwogcHVibGljOgogICAgIHN0cnVj
dCBET01MaXN0ZW5lciB7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHVz
aE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBp
bnQqIG5vZGVJZCk7CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KEVycm9yU3RyaW5nKik7CiAgICAg
dm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7Ci0gICAgdm9pZCBoaWdobGln
aHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0
Q29uZmlnKTsKICAgICB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpOwogICAgIHZvaWQgbW92ZVRv
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBj
b25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZTEyMmU0
ZmZjMmM4NDQ0MTMzYzE3OTZlNjNjNzcwYmIyYjMzMGE1MC4uY2NlNWQ4NjhhYTc3MGNmYzEyYTAx
OWU2ZDVkZGQ2NjY4ODVmMzE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5v
ZGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50PiwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyIHsKK2Ns
YXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9NRGVidWdn
ZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCosIEluc3Bl
Y3RvckFnZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgKaW5kZXggYmQxZDZhNzE5Y2U4YjIxNGMwNTJiOTA5YzM4ZjA4N2Q2
M2RjOTY3OC4uNWZlMDNmMjhhOTk1OWZkNWI2OWJjYzI3NjQxNGU1YWE1NDU4ZmIzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiB7CitjbGFzcyBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9N
U3RvcmFnZUNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggYzlj
MmM1M2M0NGQ1ZDM1NDMxMDg1MDA3Yjg5YzI5YjFiMTAyNjgwNi4uMzczZWIyZjUxYTgwYmY1YTc2
YTVjN2UzMDFjYTlkMTU2NTkzODI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JEYXRhYmFzZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiwgcHVibGljIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpEYXRhYmFzZUNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZjMyY2VhM2Q2NTFjNmFi
NjM4NjRmZWQ1NmUwMmZlMWQ0Yzk0NmJjMy4uM2YxODkyYzQxZDY3NDk0NWIzODc3M2I2MjAyOWU3
N2IwNGQ0M2IxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBib29sIHBhcnNl
TG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBsb2NhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRp
dGlvbiwgU3RyaW5nKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBh
Y3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5n
KiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlv
bikKIHsKICAgICBTdHJpbmcgc2NyaXB0SWQ7CiAgICAgaW50IGxpbmVOdW1iZXI7CkBAIC0yODAs
NyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3AKICAgICBtX2JyZWFrcG9pbnRJZFRv
RGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnJlbW92ZShkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJ
dGVyYXRvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xv
Y2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGxvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9j
YXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgbG9jYXRpb24pCiB7CiAgICAgaWYgKCFtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9p
bnRJZC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVh
a3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDhlNzJlYmU1
YWEyMjZjYTFkNDkzNTI2MzYyOTJhYmYwNDk3OTljYTUuLjUxZTRjMTVkYWQ2YWExZjJlODlmM2Ji
ZjQzZGVjOTFiZGQzNDFlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBTY3JpcHRWYWx1
ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
PiwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6RGVidWdnZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBiYWNrdHJhY2VPYmplY3RHcm91cDsKQEAgLTgy
LDkgKzgyLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JT
dHJpbmcqLCBib29sIGFjdGl2ZSk7CiAKICAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJv
clN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJM
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qg
b3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRp
b24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlv
bnMpOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRp
dGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1
YWxMb2NhdGlvbik7CisgICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
Q29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IGFjdHVhbExvY2F0aW9uKTsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7Ci0gICAgdm9pZCBjb250aW51ZVRvTG9jYXRp
b24oRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24pOwor
ICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKIAogICAgIHZvaWQgc2VhcmNoSW5Db250ZW50KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKTsKICAgICB2b2lkIHNl
dFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0
IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmgKaW5kZXggMDAzYTljNTU5ZjhlMTY2MDkyYjQ5ZThmYmJhNjU4ZGM3NDY4NTVh
My4uMmY5NmQ2ZmMyZDdkZTY5OGIyOTljZTEwZWYxMWE3ZDE2YjQxMzc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApAQCAt
NDUsNyArNDUsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3RvclN0
YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAotY2xhc3MgSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiwgcHVibGljIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVtQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gY3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckZpbGVTeXN0ZW1BZ2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCBlOGM3NzE2MWQ1MWUzZTRiZmJkZTI2Mjk2M2U4
OWQzODEzNDRiN2JmLi41MGFjZmVjMWEzOGZhMjllNGUyNmY1ODFmM2NhMzJlMjIwZDQwOTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IHsKK2Ns
YXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIGNsYXNzIEZyb250ZW5k
UHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmgKaW5kZXggYWI1MzA1ZWU2ZTRjNzVlYzViZWNkNWYyMzA3NzYxYTBlMTBiOWRjYi4u
MzIwYWJkOThlMzQ1YWEyMGUyZWEwZWYxNzFlYTRkNTI5ZjNiMmIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JN
ZW1vcnlBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpNZW1vcnlDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9y
PE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+ID4gSW5zcGVjdG9yQWdlbnRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGQ2
MWMwOTM5ZWMwMThlMGYwMTY0YzljMzY3MTZlMTg2ODc0ZjRmZDguLmRiMGRkNGQ1MjIxZjA5NTFh
YjU4NWZiYWU0YTQxMTQ5NmM1YTBlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFnZUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQYWdlQWdlbnQ+IHsKK2Ns
YXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yUGFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpQYWdlQ29t
bWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2Vu
dCk7CiBwdWJsaWM6CiAgICAgZW51bSBSZXNvdXJjZVR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGZkZDU2YTg2
NWJkYjEwZTdhMmMxNGNjZWNkOTM4NWIyZTBmZTMxYjMuLjZhZGFhMzQxNDU2YzJjNDM4NjAwOWUz
OWJkMWQ4MTU1Mzc1ODgzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTIxNyw4ICsyMTcsOSBAQCBwcml2YXRlOgog
CiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2Zp
bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpCit2b2lkIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCBy
YXdVaWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBwcm9maWxlT2JqZWN0KQogeworICAgIHVu
c2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIGlmICh0eXBl
ID09IENQVVByb2ZpbGVUeXBlKSB7CiAgICAgICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9
IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogICAgICAgICBpZiAoaXQgIT0gbV9wcm9maWxlcy5lbmQo
KSkgewpAQCAtMjQwLDggKzI0MSw5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0
UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduCiAgICAgfQog
fQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlw
ZSwgaW50IHJhd1VpZCkKIHsKKyAgICB1bnNpZ25lZCB1aWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmF3VWlkKTsKICAgICBpZiAodHlwZSA9PSBDUFVQcm9maWxlVHlwZSkgewogICAgICAgICBp
ZiAobV9wcm9maWxlcy5jb250YWlucyh1aWQpKQogICAgICAgICAgICAgbV9wcm9maWxlcy5yZW1v
dmUodWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
cm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oCmluZGV4IDAyYmNiN2I0MzI4YTc1ZDBhZDJkNTZmZDQ0N2JmMWY3ZTg5MmFlNWIu
Ljg0ZmE0NjZiY2Q2ODc0ODNkMDQwOWY2ZjI2YTkyZjgxYTNkNjhjMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNTUsNyAr
NTUsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4s
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UHJvZmlsZXJDb21tYW5kSGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVj
dG9yQ29uc29sZUFnZW50KiwgUGFnZSosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKik7CkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShib29s
IHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIG1fZW5hYmxlZDsg
fQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5j
cmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJz
KEVycm9yU3RyaW5nKiBlcnJvciwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaGVhZGVycyk7Ci0g
ICAgdm9pZCBnZXRQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB0eXBl
LCB1bnNpZ25lZCB1aWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBwcm9maWxlT2JqZWN0KTsK
LSAgICB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcm
IHR5cGUsIHVuc2lnbmVkIHVpZCk7CisgICAgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGhlYWRlcnMpOworICAgIHZvaWQgZ2V0UHJv
ZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpOworICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHVpZCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJGcm9udGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGQ4ZTRjNjkwMmJkM2IxZWNjMDg2OTJmMWYyZDgx
YWU1N2FmN2YwZGQuLmNhM2IwZTkyNWRjYzU1N2JkYjBiYzFmYzkwYjNmY2E4ZTRlNTUzMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNl
dFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cwogICAgIG1f
c3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6OnVzZXJBZ2VudE92ZXJyaWRlLCB1
c2VyQWdlbnQpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEV4dHJhSFRU
UEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVy
cykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJv
clN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoZWFkZXJzKQogewogICAg
IG1fc3RhdGUtPnNldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRl
cnMsIGhlYWRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGY2Zjc1YmYyN2I4Yjk2NGJkNDMzYzdiODI0N2M5NjUy
YmYxNDI1NS4uMTBkZDA2MjJjYmRkNmQ5YWMwOTFkMGJhMjI5YjU5M2VkYmY5MTljYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBA
IC03Myw3ICs3Myw3IEBAIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4geworY2xh
c3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
TmV0d29ya0NvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3RvckNs
aWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAgICAgewpAQCAtMTI2LDcgKzEy
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgc2V0VXNlckFnZW50T3ZlcnJpZGUoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgdm9pZCBzZXRFeHRyYUhU
VFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKKyAg
ICB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYpOwogICAgIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5j
b2RlZCk7CiAgICAgdm9pZCBjbGVhckNhY2hlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBj
b25zdCBvcHRpb25hbFByZXNlcnZlZExvYWRlcklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IDc5YTIwMmI4OWRhNzEzYzky
Mzk4ZDY4ZDFmMjIwZDM5MzgwODliYTAuLjk3MmE3ZDg4ZGU3NDA4OTEzY2IwYmVlNGI5M2MzNGU2
NzI1YTIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgV29ya2VyQ29udGV4dDsKIAogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiB7CitjbGFz
cyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UnVu
dGltZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JS
dW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2Vu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCmluZGV4IDVjMGFjZDE4YjY0MTllNjE3ZTkzZjhmMDlmNzlmMjk2YmM0NmI2NGYu
LmQyM2MxZWEyMWRiOGRmNTliZjFkOTAwZmE0MTUwMjNmZThmYzc0NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTEz
Niw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJlc3RvcmUoKQogICAg
IH0KIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydChFcnJvclN0cmluZyos
IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIHsKICAgICBp
ZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDkyYTk3MGNkOTUwNGI2YzBl
ODMwOTY2MzczZmZmYmFmZWZiOThlNjguLjYwNjE5Y2NkYTIxMjlhNjdiMDU4MzA4M2YxZjhlNTZi
MWM1NjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4s
IFNjcmlwdEdDRXZlbnRMaXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiwgU2NyaXB0
R0NFdmVudExpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlRpbWVs
aW5lQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3Rvck1lbW9yeUFnZW50KiBtZW1vcnlB
Z2VudCkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZy
b250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAotICAgIHZvaWQgc3RhcnQo
RXJyb3JTdHJpbmcqLCBpbnQqIG1heENhbGxTdGFja0RlcHRoKTsKKyAgICB2b2lkIHN0YXJ0KEVy
cm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCk7CiAgICAgdm9pZCBzdG9w
KEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRJbmNsdWRlTWVtb3J5RGV0YWlscyhFcnJvclN0
cmluZyosIGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcAppbmRleCA3NTExZGExZDY5MmY4YzljYzQyMDVlNzkzNjE3ZjE5ZjI4
ODc2MTlmLi4xYjM4NTk1NzFjYWZjMjNlNGM1NDFkMzQ5YzI2MGRhMWZlNGYzYjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAg
LTE2OSw3ICsxNjksNyBAQCB2b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaXNjb25uZWN0RnJv
bVdvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3JrZXJJZAogICAgICAgICAqZXJyb3Ig
PSAiV29ya2VyIGlzIGdvbmUiOwogfQogCi12b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpzZW5k
TWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtlcklkLCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgd29ya2VySWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKQogewogICAgIFdvcmtlckZyb250
ZW5kQ2hhbm5lbCogY2hhbm5lbCA9IG1faWRUb0NoYW5uZWwuZ2V0KHdvcmtlcklkKTsKICAgICBp
ZiAoY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKaW5kZXggNTk2ZmYxNmFmMzM1ZTI1NmE1ZWQ5MjkyNjNjMGUxMDEwMTFmNGE0MC4u
ZDQwNDI3ODk1MGRkODkzNGU1YjMyNGE5Mzc4NjhlYzUyYTkzNDllMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgV29ya2VyQ29udGV4dFByb3h5OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvcldvcmtlckFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yV29ya2VyQWdlbnQ+LCBwdWJsaWMg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OldvcmtlckNvbW1hbmRIYW5kbGVyIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JXb3JrZXJBZ2VudD4gY3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIH5JbnNwZWN0b3JXb3Jr
ZXJBZ2VudCgpOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXb3JrZXJJ
bnNwZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgdmFsdWUpOwogICAgIHZvaWQgY29u
bmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkKTsKICAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkKTsKLSAgICB2b2lkIHNl
bmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIo
RXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBtZXNzYWdlKTsKICAgICB2b2lkIHNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5n
KiwgYm9vbCB2YWx1ZSk7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124761</attachid>
            <date>2012-01-31 09:41:16 -0800</date>
            <delta_ts>2012-01-31 09:48:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120131214113.patch</filename>
            <type>text/plain</type>
            <size>32820</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZTcxZjE2ZjE5OGU2
MjAxZGIxZDAyMjc5Yjk3NDA4YTc3OGE1My4uMDVhMTVmNmI3YzQyNmM4N2ZmMWNlZTYwYWUxNmNj
MmRlZWYxMWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMS0zMSAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgVGhl
IHNwZWMgcmVuYW1lZCBhZGRUcmFjaygpIHRvIGFkZFRleHRUcmFjaygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBlODk1
ZjA3YWI5YTI5ZjUzNGEzNWRhZjVkZmYxOTZmNjcwM2FiNGIxLi4xNDY5NmMwY2FlMGEzYzg5OTQ1
NzU2N2ZiMWMzOTZhMDU5NGMwNjIyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTUzLDE1ICsxNTMsOSBAQCBWQUxJREFU
T1JfSUZERUZfTkFNRSA9ICIhQVNTRVJUX0RJU0FCTEVEIgogY2xhc3MgRG9tYWluTmFtZUZpeGVz
OgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfZml4ZWRfZGF0YShjbHMsIGRvbWFpbl9u
YW1lKToKLSAgICAgICAgaWYgZG9tYWluX25hbWUgaW4gY2xzLmFnZW50X3R5cGVfbWFwOgotICAg
ICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSBjbHMuYWdlbnRfdHlwZV9tYXBbZG9tYWluX25hbWVd
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZ2VudF9uYW1lX3JlcyA9ICJJbnNwZWN0b3Il
c0FnZW50IiAlIGRvbWFpbl9uYW1lCi0KICAgICAgICAgZmllbGRfbmFtZV9yZXMgPSBDYXBpdGFs
aXplci51cHBlcl9jYW1lbF9jYXNlX3RvX2xvd2VyKGRvbWFpbl9uYW1lKSArICJBZ2VudCIKIAog
ICAgICAgICBjbGFzcyBSZXMob2JqZWN0KToKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFtZSA9
IGFnZW50X25hbWVfcmVzCiAgICAgICAgICAgICBza2lwX2pzX2JpbmQgPSBkb21haW5fbmFtZSBp
biBjbHMuc2tpcF9qc19iaW5kX2RvbWFpbnMKICAgICAgICAgICAgIGFnZW50X2ZpZWxkX25hbWUg
PSBmaWVsZF9uYW1lX3JlcwogCkBAIC0xODQsNyArMTc4LDYgQEAgY2xhc3MgRG9tYWluTmFtZUZp
eGVzOgogICAgICAgICByZXR1cm4gUmVzCiAKICAgICBza2lwX2pzX2JpbmRfZG9tYWlucyA9IHNl
dChbIlJ1bnRpbWUiLCAiRE9NRGVidWdnZXIiXSkKLSAgICBhZ2VudF90eXBlX21hcCA9IHsiTmV0
d29yayI6ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwgIkluc3BlY3RvciI6ICJJbnNwZWN0b3JB
Z2VudCIsIH0KIAogCiBjbGFzcyBDUGFyYW1UeXBlKG9iamVjdCk6CkBAIC0yNDYxLDEwICsyNDU0
LDExIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1l
ID0gQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5fbmFtZSkgKyAi
Q29tbWFuZEhhbmRsZXIiCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoIiAgICBjbGFzcyAlcyB7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25h
bWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5h
cHBlbmQoIiAgICBwdWJsaWM6XG4iKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdl
bnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgICAgIHZpcnR1YWwgfiVzKCkgeyB9XG4iICUg
YWdlbnRfaW50ZXJmYWNlX25hbWUpOwogICAgICAgICAgICAgaWYgImNvbW1hbmRzIiBpbiBqc29u
X2RvbWFpbjoKICAgICAgICAgICAgICAgICBmb3IganNvbl9jb21tYW5kIGluIGpzb25fZG9tYWlu
WyJjb21tYW5kcyJdOgogICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IucHJvY2Vzc19jb21t
YW5kKGpzb25fY29tbWFuZCwgZG9tYWluX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpCisgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIlxuICAg
IHByb3RlY3RlZDpcbiIpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRl
cmZhY2VfbGlzdC5hcHBlbmQoIiAgICAgICAgdmlydHVhbCB+JXMoKSB7IH1cbiIgJSBhZ2VudF9p
bnRlcmZhY2VfbmFtZSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVy
ZmFjZV9saXN0LmFwcGVuZCgiICAgIH07XG5cbiIpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9n
dWFyZDoKQEAgLTI0OTUsMTQgKzI0ODksMTEgQEAgY2xhc3MgR2VuZXJhdG9yOgogCiAgICAgICAg
ICAgICBhZ2VudF9pbnRlcmZhY2VfbmFtZSA9IENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2Vf
dG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkNvbW1hbmRIYW5kbGVyIgogCi0gICAgICAgICAgICBh
Z2VudF90eXBlX25hbWUgPSBkb21haW5fZml4ZXMuYWdlbnRfdHlwZV9uYW1lCiAgICAgICAgICAg
ICBhZ2VudF9maWVsZF9uYW1lID0gZG9tYWluX2ZpeGVzLmFnZW50X2ZpZWxkX25hbWUKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdC5hcHBlbmQoIiAg
ICAgICAgLCBtXyVzKDApIiAlIGFnZW50X2ZpZWxkX25hbWUpCi0gICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF92aXJ0dWFsX3NldHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJBZ2VudCglcyAvKiAlcyAqLyogJXMpID0gMDsiICUgKGFnZW50X3R5cGVfbmFtZSwg
YWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQotICAgICAgICAgICAgR2Vu
ZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZvaWQgcmVnaXN0ZXJBZ2Vu
dCglcyAvKiAlcyAqLyogJXMpIHsgQVNTRVJUKCFtXyVzKTsgbV8lcyA9ICVzOyB9IiAlIChhZ2Vu
dF90eXBlX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2Vu
dF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xpc3QuYXBwZW5kKCIgICAgJXMgLyogJXMg
Ki8qIG1fJXM7IiAlIChhZ2VudF90eXBlX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lLCBhZ2Vu
dF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZvcndhcmRfbGlz
dC5hcHBlbmQoImNsYXNzICVzOyIgJSBhZ2VudF90eXBlX25hbWUpCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3QuYXBwZW5kKCIjaW5jbHVkZSBcIiVzLmhcIiIgJSBh
Z2VudF90eXBlX25hbWUpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF92aXJ0dWFsX3Nl
dHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBZ2VudCglcyogJXMp
ID0gMDsiICUgKGFnZW50X2ludGVyZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKKyAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3NldHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2b2lkIHJl
Z2lzdGVyQWdlbnQoJXMqICVzKSB7IEFTU0VSVCghbV8lcyk7IG1fJXMgPSAlczsgfSIgJSAoYWdl
bnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFn
ZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQorICAgICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfZmllbGRfbGlzdC5hcHBlbmQoIiAgICAlcyogbV8lczsiICUgKGFnZW50X2ludGVy
ZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKIAogICAgICAgICAgICAgaWYgZG9tYWluX2d1
YXJkOgogICAgICAgICAgICAgICAgIGZvciBsIGluIHJldmVyc2VkKHNvcnRlZF9jeWNsZV9ndWFy
ZGFibGVfbGlzdF9saXN0KToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmgKaW5kZXggZjdjOGU0OGMyNDY0YjI0ZjNjYzVlYTBiMWJjZWU0YzQ5NDdmYmZkMy4uYTM4YmUy
MWVlNjkwOWI4ZDMzNTQxYzkwYWI0NzdiZjliYjcwMDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGFnZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4geworY2xhc3MgSW5zcGVjdG9y
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFnZW50PiwgcHVibGlj
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kSGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckFnZW50PiBjcmVhdGUoUGFnZSogcGFnZSwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaAppbmRleCBhYzA5Mjk3NTk5MzI4ZjU0N2VlNTcxMzQ4YzRjZGQwNWI2ZDI3NDZkLi40
NThkYjNiZjViMThiOTU5MzdkMjJkMTE4OTRmMzI2ZWY0MTUwZDczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudD4geworY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+LCBwdWJsaWMg
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkFwcGxpY2F0aW9uQ2FjaGVDb21tYW5kSGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGIxYTU5YTM5NGI0N2RiNTM2MzI4ODI1NTkxYTQ2
YTEzMTdjMjQ1MGMuLjdjODEwOGRiMmQxZTg5MjVlY2UwNjE1ZDc2Yjc4NzRiYTVkNGI4MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAt
MzMxLDcgKzMzMSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlY2FsY1N0eWxlRm9yUHNl
dWRvU3RhdGVJZk5lZWRlZChFbGVtZW50KiBlbGVtZW50LCBJbnNwCiAgICAgICAgIGVsZW1lbnQt
Pm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlh
dGVseSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgYm9vbCogbmVlZFBzZXVkbywgYm9v
bCogbmVlZEluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVz
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0
Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBi
b29sKiBuZWVkUHNldWRvLCBjb25zdCBib29sKiBuZWVkSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVk
b0lkUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpCiB7CiAg
ICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsK
ICAgICBpZiAoIWVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5oCmluZGV4IDcwYjJkZDkwYTQzNzRlYjBjODJkNzY3OWY3ODlhYmEyZGNiOWI1ZTku
LjY4ZGFjNzk2NTNhNzMyMjU3NGQzZjgxNGViNDU0Y2RkMGMzNjQ1MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNs
YXNzIFNlbGVjdG9yUHJvZmlsZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLWNsYXNzIElu
c3BlY3RvckNTU0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NB
Z2VudD4sIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgeworY2xhc3MgSW5z
cGVjdG9yQ1NTQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNTU0Fn
ZW50PiwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciwgcHVibGljIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpDU1NDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBDU1NT
dHlsZVJ1bGUqIGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqKTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNz
ZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0eWxlKTsKICAgICB2b2lkIGdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGF0dHJpYnV0ZXMpOwot
ICAgIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBib29s
KiBpbmNsdWRlUHNldWRvLCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lk
UnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOworICAgIHZv
aWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBz
ZXVkb0lkUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOwog
ICAgIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+JiBzdHlsZVNoZWV0SW5mb3MpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgcmVzdWx0KTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA3MTIzYmU4MGM3
ZmI0MDhlZTg4NWQ4NDc4YjE1MTY3YjBkYjU1YWFkLi5mMmJlYmQyMzUwY2QzNjg5OTRlMDYxM2Nh
NTc2YmM3Y2IxN2ZjMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xl
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNvbnNvbGVBZ2VudD4g
eworY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXI6OkNvbnNvbGVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yQ29uc29sZUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cAppbmRleCAyOGMwZjNiN2QwMTk5Nzk3ZjExNjE5MjU1MGY0ZGNiNzcwY2NhNTMxLi5hYjNiNDlk
M2I4ODcwMTZhNTE2N2UzYzExNDA1NTg1NjhhOWRjZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTk3NSw3ICs5NzUsNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9k
ZSgKICAgICBFcnJvclN0cmluZyosCiAgICAgaW50IG5vZGVJZCwKLSAgICBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBoaWdobGlnaHRDb25maWcpCisgICAgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZykKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9IG5v
ZGVGb3JJZChub2RlSWQpKSB7CiAgICAgICAgIGlmIChzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZp
ZyhoaWdobGlnaHRDb25maWcuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDAxYzQ5ZGNjYzgwNWYxMjU3MTdkZjFjZmFiZWEyMGY3
ZWU2Y2ZkZjUuLmE0NjBkYzI3N2FiMDc0Y2EwMWQ1NTdiMmZhOTE0NDYzYzdmZTBhM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC04OSw3ICs4
OSw3IEBAIHN0cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5l
clZlY3RvciBldmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTUFnZW50PiB7CitjbGFz
cyBJbnNwZWN0b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
RE9NQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRPTUNvbW1hbmRI
YW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiBw
dWJsaWM6CiAgICAgc3RydWN0IERPTUxpc3RlbmVyIHsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoRXJy
b3JTdHJpbmcqKTsKICAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsK
LSAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaWdobGlnaHRDb25maWcpOworICAgIHZvaWQgaGlnaGxp
Z2h0Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBoaWdobGlnaHRDb25maWcpOwogICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7
CiAgICAgdm9pZCBtb3ZlVG8oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9k
ZUlkLCBjb25zdCBpbnQqIGNvbnN0IGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaAppbmRleCBjNDlmNmJlYzU4OTM1YWJhY2Q1Y2Q4Njc0Yjc4MjdiZjRlMmQ1NjdjLi5hNGE5
YjBkMzA2YzU1ODMxZDZjYWIyY2MwZDM2NTliNDE2NGY3MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDcg
KzU0LDcgQEAgY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNs
YXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6TGlzdGVuZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpET01EZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBiZDFkNmE3MTljZThiMjE0
YzA1MmI5MDljMzhmMDg3ZDYzZGM5Njc4Li41ZmUwM2YyOGE5OTU5ZmQ1YjY5YmNjMjc2NDE0ZTVh
YTU0NThmYjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwog
CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ+IHsKK2NsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpET01TdG9yYWdlQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuaAppbmRleCBjOWMyYzUzYzQ0ZDVkMzU0MzEwODUwMDdiODljMjliMWIxMDI2ODA2Li4z
NzNlYjJmNTFhODBiZjVhNzZhNWM3ZTMwMWNhOWQxNTY1OTM4MjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckRhdGFi
YXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdl
bnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29tbWFuZEhh
bmRsZXIgewogcHVibGljOgogICAgIGNsYXNzIEZyb250ZW5kUHJvdmlkZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRl
eCBmMzJjZWEzZDY1MWM2YWI2Mzg2NGZlZDU2ZTAyZmUxZDRjOTQ2YmMzLi4zZjE4OTJjNDFkNjc0
OTQ1YjM4NzczYjYyMDI5ZTc3YjA0ZDQzYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAg
c3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFs
Q29uZGl0aW9uLCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIGFjdHVhbExvY2F0aW9uKQogewogICAgIFN0cmluZyBzY3JpcHRJZDsKICAgICBpbnQgbGlu
ZU51bWJlcjsKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcAogICAg
IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMucmVtb3ZlKGRlYnVnU2Vy
dmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbikKIHsKICAgICBpZiAoIW1fY29udGludWVU
b0xvY2F0aW9uQnJlYWtwb2ludElkLmlzRW1wdHkoKSkgewogICAgICAgICBzY3JpcHREZWJ1Z1Nl
cnZlcigpLnJlbW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgKaW5kZXggOGU3MmViZTVhYTIyNmNhMWQ0OTM1MjYzNjI5MmFiZjA0OTc5OWNhNS4uNTFlNGMx
NWRhZDZhYTFmMmU4OWYzYmJmNDNkZWM5MWJkZDM0MWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC01OCw3ICs1OCw3IEBA
IGNsYXNzIFNjcmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKK2NsYXNz
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpEZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJhY2t0cmFjZU9i
amVjdEdyb3VwOwpAQCAtODIsOSArODIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCcmVha3Bv
aW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAogICAgIHZvaWQgc2V0QnJl
YWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwg
Y29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nKiBjb25z
dCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4mIGxvY2F0aW9ucyk7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5n
KiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNv
bnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mIGFjdHVhbExvY2F0aW9uKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtw
b2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKLSAgICB2b2lk
IGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBsb2NhdGlvbik7CisgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCiAgICAgdm9pZCBz
ZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYpOwogICAgIHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBw
cmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCAwMDNhOWM1NTlmOGUxNjYwOTJiNDll
OGZiYmE2NThkYzc0Njg1NWEzLi4yZjk2ZDZmYzJkN2RlNjk4YjI5OWNlMTBlZjExYTdkMTZiNDEz
NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5
c3RlbUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwog
Y2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCi1jbGFz
cyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4geworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+LCBw
dWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxl
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGU4Yzc3MTYxZDUx
ZTNlNGJmYmRlMjYyOTYzZTg5ZDM4MTM0NGI3YmYuLjUwYWNmZWMxYTM4ZmEyOWU0ZTI2ZjU4MWYz
Y2EzMmUyMjBkNDA5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEluc3BlY3RvclBh
Z2VBZ2VudDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudD4geworY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50PiwgcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAg
ICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCBhYjUzMDVlZTZlNGM3NWVjNWJlY2Q1ZjIz
MDc3NjFhMGUxMGI5ZGNiLi4zMjBhYmQ5OGUzNDVhYTIwZTJlYTBlZjE3MWVhNGQ1MjlmM2IyYjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+LCBwdWJs
aWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok1lbW9yeUNvbW1hbmRIYW5kbGVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JNZW1vcnlBZ2VudCk7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZT4gPiBJ
bnNwZWN0b3JBZ2VudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKaW5kZXggZDYxYzA5MzllYzAxOGUwZjAxNjRjOWMzNjcxNmUxODY4NzRmNGZkOC4u
ZGIwZGQ0ZDUyMjFmMDk1MWFiNTg1ZmJhZTRhNDExNDk2YzVhMGVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFz
cyBJbnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
clBhZ2VBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudDxJbnNwZWN0b3JQYWdlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI6OlBhZ2VDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zcGVjdG9yUGFnZUFnZW50KTsKIHB1YmxpYzoKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAKaW5kZXggZmRkNTZhODY1YmRiMTBlN2EyYzE0Y2NlY2Q5Mzg1YjJlMGZlMzFiMy4uNmFkYWEz
NDE0NTZjMmM0Mzg2MDA5ZTM5YmQxZDgxNTUzNzU4ODM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtMjE3LDggKzIx
Nyw5IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlCiAKLXZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5z
aWduZWQgdWlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQg
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgdHlwZSwgaW50IHJhd1VpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVP
YmplY3QpCiB7CisgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhd1Vp
ZCk7CiAgICAgaWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgUHJvZmlsZXNN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChpdCAh
PSBtX3Byb2ZpbGVzLmVuZCgpKSB7CkBAIC0yNDAsOCArMjQxLDkgQEAgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBl
LCB1bnNpZ24KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3Zl
UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKQor
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgcmF3VWlkKQogeworICAgIHVuc2lnbmVkIHVpZCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVU
eXBlKSB7CiAgICAgICAgIGlmIChtX3Byb2ZpbGVzLmNvbnRhaW5zKHVpZCkpCiAgICAgICAgICAg
ICBtX3Byb2ZpbGVzLnJlbW92ZSh1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggMDJiY2I3YjQzMjhhNzVkMGFkMmQ1NmZk
NDQ3YmYxZjdlODkyYWU1Yi4uODRmYTQ2NmJjZDY4NzQ4M2QwNDA5ZjZmMjZhOTJmODFhM2Q2OGMy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxlckFnZW50PiB7CitjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JQcm9maWxlckFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpQcm9m
aWxlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQ
cm9maWxlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqLCBQYWdlKiwgSW5zcGVjdG9yU3RhdGUq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKQEAgLTgxLDkgKzgxLDkgQEAgcHVibGljOgogICAg
IHZvaWQgZW5hYmxlKGJvb2wgc2tpcFJlY29tcGlsZSk7CiAgICAgYm9vbCBlbmFibGVkKCkgeyBy
ZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJv
ZmlsZU5hbWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpOwotICAgIHZvaWQg
Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBoZWFkZXJzKTsKLSAgICB2b2lkIGdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IHByb2ZpbGVPYmplY3QpOwotICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyogZXJy
b3IsIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKTsKKyAgICB2b2lkIGdldFByb2Zp
bGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaGVhZGVycyk7
CisgICAgdm9pZCBnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBp
bnQgdWlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7CisgICAgdm9p
ZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlk
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggZDhlNGM2OTAyYmQz
YjFlY2MwODY5MmYxZjJkODFhZTU3YWY3ZjBkZC4uY2EzYjBlOTI1ZGNjNTU3YmRiMGJjMWZjOTBi
M2ZjYThlNGU1NTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVzCiAgICAgbV9zdGF0ZS0+c2V0U3RyaW5nKFJlc291cmNlQWdlbnRTdGF0ZTo6dXNl
ckFnZW50T3ZlcnJpZGUsIHVzZXJBZ2VudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRy
YUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IGhlYWRlcnMpCiB7CiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KFJlc291cmNlQWdlbnRTdGF0ZTo6
ZXh0cmFSZXF1ZXN0SGVhZGVycywgaGVhZGVycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA4ZjZmNzViZjI3YjhiOTY0
YmQ0MzNjN2I4MjQ3Yzk2NTJiZjE0MjU1Li4xMGRkMDYyMmNiZGQ2ZDlhYzA5MWQwYmEyMjliNTkz
ZWRiZjkxOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSZXNv
dXJjZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpOZXR3b3JrQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAg
ICB7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3Ry
aW5nKik7CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRVc2Vy
QWdlbnRPdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAg
ICB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4pOworICAgIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdm9pZCBnZXRSZXNwb25zZUJv
ZHkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50
LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICB2b2lkIGNsZWFyQ2FjaGUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsUHJlc2VydmVkTG9hZGVySWQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXgg
NzlhMjAyYjg5ZGE3MTNjOTIzOThkNjhkMWYyMjBkMzkzODA4OWJhMC4uOTcyYTdkODhkZTc0MDg5
MTNjYjBiZWU0YjkzYzM0ZTY3MjVhMjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBXb3Jr
ZXJDb250ZXh0OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSdW50
aW1lQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpSdW50aW1lQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEluc3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5z
cGVjdG9yUnVudGltZUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggNWMwYWNkMThiNjQxOWU2MTdlOTNmOGYw
OWY3OWYyOTZiYzQ2YjY0Zi4uZDIzYzFlYTIxZGI4ZGY1OWJmMWQ5MDBmYTQxNTAyM2ZlOGZjNzQ3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6cmVzdG9yZSgpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0
YXJ0KEVycm9yU3RyaW5nKiwgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKK3ZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFj
a0RlcHRoKQogewogICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXgg
OTJhOTcwY2Q5NTA0YjZjMGU4MzA5NjYzNzNmZmZiYWZlZmI5OGU2OC4uNjA2MTljY2RhMjEyOWE2
N2IwNTgzMDgzZjFmOGU1NmIxYzU2OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JUaW1lbGluZUFnZW50PiwgU2NyaXB0R0NFdmVudExpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ+LCBTY3JpcHRHQ0V2ZW50TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6VGltZWxpbmVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yTWVt
b3J5QWdlbnQqIG1lbW9yeUFnZW50KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOwog
Ci0gICAgdm9pZCBzdGFydChFcnJvclN0cmluZyosIGludCogbWF4Q2FsbFN0YWNrRGVwdGgpOwor
ICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRo
KTsKICAgICB2b2lkIHN0b3AoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHNldEluY2x1ZGVNZW1v
cnlEZXRhaWxzKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDc1MTFkYTFkNjkyZjhjOWNj
NDIwNWU3OTM2MTdmMTlmMjg4NzYxOWYuLjFiMzg1OTU3MWNhZmMyM2U0YzU0MWQzNDljMjYwZGEx
ZmU0ZjNiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdl
bnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtlcklk
CiAgICAgICAgICplcnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
V29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQg
d29ya2VySWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKQordm9pZCBJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJyb3Is
IGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpCiB7
CiAgICAgV29ya2VyRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9pZFRvQ2hhbm5lbC5nZXQo
d29ya2VySWQpOwogICAgIGlmIChjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA1OTZmZjE2YWYzMzVlMjU2YTVlZDkyOTI2
M2MwZTEwMTAxMWY0YTQwLi5kNDA0Mjc4OTUwZGQ4OTM0ZTViMzI0YTkzNzg2OGVjNTJhOTM0OWUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IHsKK2NsYXNzIEluc3Bl
Y3RvcldvcmtlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXb3Jr
ZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29tbWFu
ZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvcldvcmtl
ckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAg
ICAgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFdvcmtlckluc3BlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1
ZSk7CiAgICAgdm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQp
OwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2Vy
SWQpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3Jr
ZXJJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpOworICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dv
cmtlcnMoRXJyb3JTdHJpbmcqLCBib29sIHZhbHVlKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124762</attachid>
            <date>2012-01-31 09:48:32 -0800</date>
            <delta_ts>2012-01-31 13:51:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120131214829.patch</filename>
            <type>text/plain</type>
            <size>34977</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZTcxZjE2ZjE5OGU2
MjAxZGIxZDAyMjc5Yjk3NDA4YTc3OGE1My4uMDVhMTVmNmI3YzQyNmM4N2ZmMWNlZTYwYWUxNmNj
MmRlZWYxMWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMS0zMSAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgVGhl
IHNwZWMgcmVuYW1lZCBhZGRUcmFjaygpIHRvIGFkZFRleHRUcmFjaygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBlODk1
ZjA3YWI5YTI5ZjUzNGEzNWRhZjVkZmYxOTZmNjcwM2FiNGIxLi42YWY1N2U2MjAyNDc0ZTU2YWZi
NmZkNTNkMTNlNDI2ZjUxNWRkZjA5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTUzLDE1ICsxNTMsOSBAQCBWQUxJREFU
T1JfSUZERUZfTkFNRSA9ICIhQVNTRVJUX0RJU0FCTEVEIgogY2xhc3MgRG9tYWluTmFtZUZpeGVz
OgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfZml4ZWRfZGF0YShjbHMsIGRvbWFpbl9u
YW1lKToKLSAgICAgICAgaWYgZG9tYWluX25hbWUgaW4gY2xzLmFnZW50X3R5cGVfbWFwOgotICAg
ICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSBjbHMuYWdlbnRfdHlwZV9tYXBbZG9tYWluX25hbWVd
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZ2VudF9uYW1lX3JlcyA9ICJJbnNwZWN0b3Il
c0FnZW50IiAlIGRvbWFpbl9uYW1lCi0KICAgICAgICAgZmllbGRfbmFtZV9yZXMgPSBDYXBpdGFs
aXplci51cHBlcl9jYW1lbF9jYXNlX3RvX2xvd2VyKGRvbWFpbl9uYW1lKSArICJBZ2VudCIKIAog
ICAgICAgICBjbGFzcyBSZXMob2JqZWN0KToKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFtZSA9
IGFnZW50X25hbWVfcmVzCiAgICAgICAgICAgICBza2lwX2pzX2JpbmQgPSBkb21haW5fbmFtZSBp
biBjbHMuc2tpcF9qc19iaW5kX2RvbWFpbnMKICAgICAgICAgICAgIGFnZW50X2ZpZWxkX25hbWUg
PSBmaWVsZF9uYW1lX3JlcwogCkBAIC0xODQsNyArMTc4LDYgQEAgY2xhc3MgRG9tYWluTmFtZUZp
eGVzOgogICAgICAgICByZXR1cm4gUmVzCiAKICAgICBza2lwX2pzX2JpbmRfZG9tYWlucyA9IHNl
dChbIlJ1bnRpbWUiLCAiRE9NRGVidWdnZXIiXSkKLSAgICBhZ2VudF90eXBlX21hcCA9IHsiTmV0
d29yayI6ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwgIkluc3BlY3RvciI6ICJJbnNwZWN0b3JB
Z2VudCIsIH0KIAogCiBjbGFzcyBDUGFyYW1UeXBlKG9iamVjdCk6CkBAIC0xNzQ5LDggKzE3NDIs
NiBAQCBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotJGZvcndhcmREZWNsYXJhdGlvbnMKLQogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gewpAQCAt
MjM5OSw4ICsyMzkwLDYgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGJhY2tlbmRfc2V0dGVyc19s
aXN0ID0gW10KICAgICBiYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCA9IFtdCiAgICAgYmFj
a2VuZF9maWVsZF9saXN0ID0gW10KLSAgICBiYWNrZW5kX2ZvcndhcmRfbGlzdCA9IFtdCi0gICAg
YmFja2VuZF9pbmNsdWRlX2xpc3QgPSBbXQogICAgIGZyb250ZW5kX2NvbnN0cnVjdG9yX2luaXRf
bGlzdCA9IFtdCiAgICAgdHlwZV9idWlsZGVyX2ZyYWdtZW50cyA9IFtdCiAgICAgdHlwZV9idWls
ZGVyX2ZvcndhcmRzID0gW10KQEAgLTI0NjEsMTAgKzI0NTAsMTEgQEAgY2xhc3MgR2VuZXJhdG9y
OgogICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9j
YW1lbF9jYXNlX3RvX3VwcGVyKGRvbWFpbl9uYW1lKSArICJDb21tYW5kSGFuZGxlciIKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAg
IGNsYXNzICVzIHtcbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSkKICAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHB1YmxpYzpcbiIp
Ci0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBl
bmQoIiAgICAgICAgdmlydHVhbCB+JXMoKSB7IH1cbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSk7
CiAgICAgICAgICAgICBpZiAiY29tbWFuZHMiIGluIGpzb25fZG9tYWluOgogICAgICAgICAgICAg
ICAgIGZvciBqc29uX2NvbW1hbmQgaW4ganNvbl9kb21haW5bImNvbW1hbmRzIl06CiAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5wcm9jZXNzX2NvbW1hbmQoanNvbl9jb21tYW5kLCBkb21h
aW5fbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5k
X2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiXG4gICAgcHJvdGVjdGVkOlxuIikKKyAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAg
ICAgICB2aXJ0dWFsIH4lcygpIHsgfVxuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKQogICAgICAg
ICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAg
fTtcblxuIikKIAogICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgpAQCAtMjQ3OSw5ICsyNDY5
LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfY29u
c3RydWN0b3JfaW5pdF9saXN0LAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVh
bF9zZXR0ZXJzX2xpc3QsCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xp
c3QsCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9maWVsZF9saXN0LAotICAgICAgICAg
ICAgR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9saXN0LAotICAgICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfaW5jbHVkZV9saXN0XQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmll
bGRfbGlzdF0KIAogICAgICAgICBmb3IganNvbl9kb21haW4gaW4gc29ydGVkX2pzb25fZG9tYWlu
czoKICAgICAgICAgICAgIGRvbWFpbl9uYW1lID0ganNvbl9kb21haW5bImRvbWFpbiJdCkBAIC0y
NDk1LDE0ICsyNDgzLDExIEBAIGNsYXNzIEdlbmVyYXRvcjoKIAogICAgICAgICAgICAgYWdlbnRf
aW50ZXJmYWNlX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGRv
bWFpbl9uYW1lKSArICJDb21tYW5kSGFuZGxlciIKIAotICAgICAgICAgICAgYWdlbnRfdHlwZV9u
YW1lID0gZG9tYWluX2ZpeGVzLmFnZW50X3R5cGVfbmFtZQogICAgICAgICAgICAgYWdlbnRfZmll
bGRfbmFtZSA9IGRvbWFpbl9maXhlcy5hZ2VudF9maWVsZF9uYW1lCiAgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QuYXBwZW5kKCIgICAgICAgICwgbV8l
cygwKSIgJSBhZ2VudF9maWVsZF9uYW1lKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
dmlydHVhbF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQWdl
bnQoJXMgLyogJXMgKi8qICVzKSA9IDA7IiAlIChhZ2VudF90eXBlX25hbWUsIGFnZW50X2ludGVy
ZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX3NldHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMgLyogJXMg
Ki8qICVzKSB7IEFTU0VSVCghbV8lcyk7IG1fJXMgPSAlczsgfSIgJSAoYWdlbnRfdHlwZV9uYW1l
LCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFt
ZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9maWVsZF9saXN0LmFwcGVuZCgiICAgICVzIC8qICVzICovKiBtXyVzOyIg
JSAoYWdlbnRfdHlwZV9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFt
ZSkpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJkX2xpc3QuYXBwZW5kKCJj
bGFzcyAlczsiICUgYWdlbnRfdHlwZV9uYW1lKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfaW5jbHVkZV9saXN0LmFwcGVuZCgiI2luY2x1ZGUgXCIlcy5oXCIiICUgYWdlbnRfdHlwZV9u
YW1lKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVhbF9zZXR0ZXJzX2xpc3Qu
YXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMqICVzKSA9IDA7IiAlIChh
Z2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCisgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdm9pZCByZWdpc3RlckFnZW50
KCVzKiAlcykgeyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFnZW50X2ludGVyZmFj
ZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9u
YW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Zp
ZWxkX2xpc3QuYXBwZW5kKCIgICAgJXMqIG1fJXM7IiAlIChhZ2VudF9pbnRlcmZhY2VfbmFtZSwg
YWdlbnRfZmllbGRfbmFtZSkpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAg
ICAgICAgICAgICBmb3IgbCBpbiByZXZlcnNlZChzb3J0ZWRfY3ljbGVfZ3VhcmRhYmxlX2xpc3Rf
bGlzdCk6CkBAIC0yODA0LDE1ICsyNzg5LDEzIEBAIGJhY2tlbmRfanNfZmlsZSA9IG9wZW4ob3V0
cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyIsICJ3IikKIGJhY2tl
bmRfaF9maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5kX2guc3Vic3RpdHV0ZShOb25lLAogICAg
IHZpcnR1YWxTZXR0ZXJzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVhbF9zZXR0ZXJzX2xp
c3QsICJcbiIpLAogICAgIGFnZW50SW50ZXJmYWNlcz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX2Fn
ZW50X2ludGVyZmFjZV9saXN0LCAiIiksCi0gICAgbWV0aG9kTmFtZXNFbnVtQ29udGVudD1qb2lu
KEdlbmVyYXRvci5tZXRob2RfbmFtZV9lbnVtX2xpc3QsICJcbiIpLAotICAgIGZvcndhcmREZWNs
YXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJkX2xpc3QsICJcbiIpKSkKKyAg
ICBtZXRob2ROYW1lc0VudW1Db250ZW50PWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9uYW1lX2VudW1f
bGlzdCwgIlxuIikpKQogCiBiYWNrZW5kX2NwcF9maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5k
X2NwcC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgY29uc3RydWN0b3JJbml0PWpvaW4oR2VuZXJhdG9y
LmJhY2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LCAiXG4iKSwKICAgICBzZXR0ZXJzPWpvaW4o
R2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LCAiXG4iKSwKICAgICBmaWVsZERlY2xhcmF0
aW9ucz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xpc3QsICJcbiIpLAogICAgIG1ldGhv
ZE5hbWVEZWNsYXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfbmFtZV9kZWNs
YXJhdGlvbl9saXN0LCAiXG4iKSwKLSAgICBpbmNsdWRlcz1qb2luKEdlbmVyYXRvci5iYWNrZW5k
X2luY2x1ZGVfbGlzdCwgIlxuIiksCiAgICAgbWV0aG9kcz1qb2luKEdlbmVyYXRvci5iYWNrZW5k
X21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LCAiXG4iKSwKICAgICBtZXRob2REZWNsYXJhdGlv
bnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfZGVjbGFyYXRpb25fbGlzdCwgIlxuIiks
CiAgICAgbWVzc2FnZUhhbmRsZXJzPWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9oYW5kbGVyX2xpc3Qs
ICJcbiIpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXgg
ZjdjOGU0OGMyNDY0YjI0ZjNjYzVlYTBiMWJjZWU0YzQ5NDdmYmZkMy4uYTM4YmUyMWVlNjkwOWI4
ZDMzNTQxYzkwYWI0NzdiZjliYjcwMDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFnZW50PiwgcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvckFnZW50PiBjcmVhdGUoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApp
bmRleCBhYzA5Mjk3NTk5MzI4ZjU0N2VlNTcxMzQ4YzRjZGQwNWI2ZDI3NDZkLi40NThkYjNiZjVi
MThiOTU5MzdkMjJkMTE4OTRmMzI2ZWY0MTUwZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gewor
Y2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OkFwcGxpY2F0aW9uQ2FjaGVDb21tYW5kSGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCmluZGV4IGIxYTU5YTM5NGI0N2RiNTM2MzI4ODI1NTkxYTQ2YTEzMTdjMjQ1
MGMuLjdjODEwOGRiMmQxZTg5MjVlY2UwNjE1ZDc2Yjc4NzRiYTVkNGI4MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJ
Zk5lZWRlZChFbGVtZW50KiBlbGVtZW50LCBJbnNwCiAgICAgICAgIGVsZW1lbnQtPm93bmVyRG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgYm9vbCogbmVlZFBzZXVkbywgYm9vbCogbmVlZElu
aGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBp
bmhlcml0ZWRFbnRyaWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29sKiBuZWVk
UHNldWRvLCBjb25zdCBib29sKiBuZWVkSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVsZXMs
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpCiB7CiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAo
IWVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
CmluZGV4IDcwYjJkZDkwYTQzNzRlYjBjODJkNzY3OWY3ODlhYmEyZGNiOWI1ZTkuLjY4ZGFjNzk2
NTNhNzMyMjU3NGQzZjgxNGViNDU0Y2RkMGMzNjQ1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFNlbGVj
dG9yUHJvZmlsZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLWNsYXNzIEluc3BlY3RvckNT
U0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgeworY2xhc3MgSW5zcGVjdG9yQ1NT
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNTU0FnZW50PiwgcHVi
bGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpDU1NDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBDU1NTdHlsZVJ1bGUq
IGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqKTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mIHN0eWxlKTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaW5s
aW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQg
Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBib29sKiBpbmNsdWRl
UHNldWRvLCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBt
YXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVsZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOworICAgIHZvaWQgZ2V0TWF0
Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29sKiBpbmNsdWRl
UHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVs
ZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOwogICAgIHZvaWQg
Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBz
dHlsZVNoZWV0SW5mb3MpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0
KTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA3MTIzYmU4MGM3ZmI0MDhlZTg4
NWQ4NDc4YjE1MTY3YjBkYjU1YWFkLi5mMmJlYmQyMzUwY2QzNjg5OTRlMDYxM2NhNTc2YmM3Y2Ix
N2ZjMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNvbnNvbGVBZ2VudD4geworY2xhc3Mg
SW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JDb25zb2xlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNvbnNv
bGVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29u
c29sZUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAy
OGMwZjNiN2QwMTk5Nzk3ZjExNjE5MjU1MGY0ZGNiNzcwY2NhNTMxLi5hYjNiNDlkM2I4ODcwMTZh
NTE2N2UzYzExNDA1NTg1NjhhOWRjZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTk3NSw3ICs5NzUsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQg
d2lkdGgsIGludAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKICAgICBF
cnJvclN0cmluZyosCiAgICAgaW50IG5vZGVJZCwKLSAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBoaWdobGlnaHRDb25maWcpCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIGhpZ2hsaWdodENvbmZpZykKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChu
b2RlSWQpKSB7CiAgICAgICAgIGlmIChzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhoaWdobGln
aHRDb25maWcuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IDAxYzQ5ZGNjYzgwNWYxMjU3MTdkZjFjZmFiZWEyMGY3ZWU2Y2ZkZjUu
LmE0NjBkYzI3N2FiMDc0Y2EwMWQ1NTdiMmZhOTE0NDYzYzdmZTBhM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0
cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBl
dmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTUFnZW50PiB7CitjbGFzcyBJbnNwZWN0
b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NQWdlbnQ+
LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRPTUNvbW1hbmRIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IERPTUxpc3RlbmVyIHsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcq
KTsKICAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKLSAgICB2b2lk
IGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBoaWdobGlnaHRDb25maWcpOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBo
aWdobGlnaHRDb25maWcpOwogICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xv
ciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CiAgICAgdm9p
ZCBtb3ZlVG8oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25z
dCBpbnQqIGNvbnN0IGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRl
eCBjNDlmNmJlYzU4OTM1YWJhY2Q1Y2Q4Njc0Yjc4MjdiZjRlMmQ1NjdjLi5hNGE5YjBkMzA2YzU1
ODMxZDZjYWIyY2MwZDM2NTliNDE2NGY3MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVu
ZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpE
T01EZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiwgSW5zcGVjdG9yQWdlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBiZDFkNmE3MTljZThiMjE0YzA1MmI5MDlj
MzhmMDg3ZDYzZGM5Njc4Li41ZmUwM2YyOGE5OTU5ZmQ1YjY5YmNjMjc2NDE0ZTVhYTU0NThmYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IHsKK2Ns
YXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpET01TdG9yYWdlQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApp
bmRleCBjOWMyYzUzYzQ0ZDVkMzU0MzEwODUwMDdiODljMjliMWIxMDI2ODA2Li4zNzNlYjJmNTFh
ODBiZjVhNzZhNWM3ZTMwMWNhOWQxNTY1OTM4MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+LCBwdWJs
aWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXIgewog
cHVibGljOgogICAgIGNsYXNzIEZyb250ZW5kUHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmMzJjZWEz
ZDY1MWM2YWI2Mzg2NGZlZDU2ZTAyZmUxZDRjOTQ2YmMzLi4zZjE4OTJjNDFkNjc0OTQ1YjM4Nzcz
YjYyMDI5ZTc3YjA0ZDQzYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGJv
b2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGxvY2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsQ29uZGl0aW9uLCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9u
LCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGFjdHVh
bExvY2F0aW9uKQogewogICAgIFN0cmluZyBzY3JpcHRJZDsKICAgICBpbnQgbGluZU51bWJlcjsK
QEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcAogICAgIG1fYnJlYWtw
b2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMucmVtb3ZlKGRlYnVnU2VydmVyQnJlYWtw
b2ludElkc0l0ZXJhdG9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250
aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRp
bnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBsb2NhdGlvbikKIHsKICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElkLmlzRW1wdHkoKSkgewogICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJl
bW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXgg
OGU3MmViZTVhYTIyNmNhMWQ0OTM1MjYzNjI5MmFiZjA0OTc5OWNhNS4uNTFlNGMxNWRhZDZhYTFm
MmU4OWYzYmJmNDNkZWM5MWJkZDM0MWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFNj
cmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudD4sIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpEZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJhY2t0cmFjZU9iamVjdEdyb3Vw
OwpAQCAtODIsOSArODIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2
ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAogICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5
VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50
KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25h
bENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IGxvY2F0aW9ucyk7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIGFjdHVhbExvY2F0aW9uKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKLSAgICB2b2lkIGNvbnRpbnVl
VG9Mb2NhdGlvbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2Nh
dGlvbik7CisgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCiAgICAgdm9pZCBzZWFyY2hJbkNv
bnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOwogICAg
IHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
ZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCAwMDNhOWM1NTlmOGUxNjYwOTJiNDllOGZiYmE2NThk
Yzc0Njg1NWEzLi4yZjk2ZDZmYzJkN2RlNjk4YjI5OWNlMTBlZjExYTdkMTZiNDEzNzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5z
cGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCi1jbGFzcyBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudD4geworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+LCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGU4Yzc3MTYxZDUxZTNlNGJmYmRl
MjYyOTYzZTg5ZDM4MTM0NGI3YmYuLjUwYWNmZWMxYTM4ZmEyOWU0ZTI2ZjU4MWYzY2EzMmUyMjBk
NDA5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dD4geworY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
RnJvbnRlbmRQcm92aWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaAppbmRleCBhYjUzMDVlZTZlNGM3NWVjNWJlY2Q1ZjIzMDc3NjFhMGUx
MGI5ZGNiLi4zMjBhYmQ5OGUzNDVhYTIwZTJlYTBlZjE3MWVhNGQ1MjlmM2IyYjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3Rvck1lbW9yeUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+LCBwdWJsaWMgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6Ok1lbW9yeUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JNZW1vcnlBZ2VudCk7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZT4gPiBJbnNwZWN0b3JB
Z2VudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgK
aW5kZXggZDYxYzA5MzllYzAxOGUwZjAxNjRjOWMzNjcxNmUxODY4NzRmNGZkOC4uZGIwZGQ0ZDUy
MjFmMDk1MWFiNTg1ZmJhZTRhNDExNDk2YzVhMGVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclBhZ2VBZ2Vu
dD4geworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JQYWdlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OlBhZ2VDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
UGFnZUFnZW50KTsKIHB1YmxpYzoKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
ZmRkNTZhODY1YmRiMTBlN2EyYzE0Y2NlY2Q5Mzg1YjJlMGZlMzFiMy4uNmFkYWEzNDE0NTZjMmM0
Mzg2MDA5ZTM5YmQxZDgxNTUzNzU4ODM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtMjE3LDggKzIxNyw5IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlCiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlk
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlw
ZSwgaW50IHJhd1VpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpCiB7
CisgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhd1VpZCk7CiAgICAg
aWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgUHJvZmlsZXNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChpdCAhPSBtX3Byb2Zp
bGVzLmVuZCgpKSB7CkBAIC0yNDAsOCArMjQxLDkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ24K
ICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKQordm9pZCBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBpbnQgcmF3VWlkKQogeworICAgIHVuc2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVUeXBlKSB7CiAg
ICAgICAgIGlmIChtX3Byb2ZpbGVzLmNvbnRhaW5zKHVpZCkpCiAgICAgICAgICAgICBtX3Byb2Zp
bGVzLnJlbW92ZSh1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmgKaW5kZXggMDJiY2I3YjQzMjhhNzVkMGFkMmQ1NmZkNDQ3YmYxZjdl
ODkyYWU1Yi4uODRmYTQ2NmJjZDY4NzQ4M2QwNDA5ZjZmMjZhOTJmODFhM2Q2OGMyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCkBA
IC01NSw3ICs1NSw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxlckFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JQ
cm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxl
ckFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpQcm9maWxlckNvbW1h
bmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQcm9maWxlckFn
ZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqLCBQYWdlKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqKTsKQEAgLTgxLDkgKzgxLDkgQEAgcHVibGljOgogICAgIHZvaWQgZW5h
YmxlKGJvb2wgc2tpcFJlY29tcGlsZSk7CiAgICAgYm9vbCBlbmFibGVkKCkgeyByZXR1cm4gbV9l
bmFibGVkOyB9CiAgICAgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
Ym9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpOwotICAgIHZvaWQgZ2V0UHJvZmls
ZUhlYWRlcnMoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBoZWFk
ZXJzKTsKLSAgICB2b2lkIGdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVP
YmplY3QpOwotICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0
IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKTsKKyAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaGVhZGVycyk7CisgICAgdm9p
ZCBnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7CisgICAgdm9pZCByZW1vdmVQ
cm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggZDhlNGM2OTAyYmQzYjFlY2MwODY5
MmYxZjJkODFhZTU3YWY3ZjBkZC4uY2EzYjBlOTI1ZGNjNTU3YmRiMGJjMWZjOTBiM2ZjYThlNGU1
NTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6c2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVz
CiAgICAgbV9zdGF0ZS0+c2V0U3RyaW5nKFJlc291cmNlQWdlbnRTdGF0ZTo6dXNlckFnZW50T3Zl
cnJpZGUsIHVzZXJBZ2VudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0
RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhUVFBIZWFk
ZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhlYWRlcnMp
CiB7CiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KFJlc291cmNlQWdlbnRTdGF0ZTo6ZXh0cmFSZXF1
ZXN0SGVhZGVycywgaGVhZGVycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA4ZjZmNzViZjI3YjhiOTY0YmQ0MzNjN2I4
MjQ3Yzk2NTJiZjE0MjU1Li4xMGRkMDYyMmNiZGQ2ZDlhYzA5MWQwYmEyMjliNTkzZWRiZjkxOWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSZXNvdXJjZUFnZW50
PiB7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpOZXR3b3JrQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICB7CkBAIC0x
MjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAg
ICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnRPdmVy
cmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2b2lkIHNl
dEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4pOworICAgIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICB2b2lkIGNsZWFyQ2FjaGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsUHJlc2VydmVkTG9hZGVySWQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggNzlhMjAyYjg5
ZGE3MTNjOTIzOThkNjhkMWYyMjBkMzkzODA4OWJhMC4uOTcyYTdkODhkZTc0MDg5MTNjYjBiZWU0
YjkzYzM0ZTY3MjVhMjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBXb3JrZXJDb250ZXh0
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUnVudGlt
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+
IHsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpSdW50aW1lQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
c3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVu
dGltZUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAKaW5kZXggNWMwYWNkMThiNjQxOWU2MTdlOTNmOGYwOWY3OWYyOTZi
YzQ2YjY0Zi4uZDIzYzFlYTIxZGI4ZGY1OWJmMWQ5MDBmYTQxNTAyM2ZlOGZjNzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzdG9y
ZSgpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9y
U3RyaW5nKiwgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQog
ewogICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggOTJhOTcwY2Q5
NTA0YjZjMGU4MzA5NjYzNzNmZmZiYWZlZmI5OGU2OC4uNjA2MTljY2RhMjEyOWE2N2IwNTgzMDgz
ZjFmOGU1NmIxYzU2OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50PiwgU2NyaXB0R0NFdmVudExpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+
LCBTY3JpcHRHQ0V2ZW50TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6VGltZWxpbmVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yTWVtb3J5QWdlbnQq
IG1lbW9yeUFnZW50KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOwogCi0gICAgdm9p
ZCBzdGFydChFcnJvclN0cmluZyosIGludCogbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIHZvaWQg
c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKTsKICAgICB2
b2lkIHN0b3AoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHNldEluY2x1ZGVNZW1vcnlEZXRhaWxz
KEVycm9yU3RyaW5nKiwgYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDc1MTFkYTFkNjkyZjhjOWNjNDIwNWU3OTM2
MTdmMTlmMjg4NzYxOWYuLjFiMzg1OTU3MWNhZmMyM2U0YzU0MWQzNDljMjYwZGExZmU0ZjNiOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nv
bm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtlcklkCiAgICAgICAg
ICplcnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdl
bnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgd29ya2VySWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKQordm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3Jr
ZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpCiB7CiAgICAgV29y
a2VyRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9pZFRvQ2hhbm5lbC5nZXQod29ya2VySWQp
OwogICAgIGlmIChjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuaAppbmRleCA1OTZmZjE2YWYzMzVlMjU2YTVlZDkyOTI2M2MwZTEwMTAx
MWY0YTQwLi5kNDA0Mjc4OTUwZGQ4OTM0ZTViMzI0YTkzNzg2OGVjNTJhOTM0OWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3Rvcldvcmtl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXb3JrZXJBZ2VudD4s
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29tbWFuZEhhbmRsZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgfkluc3Bl
Y3RvcldvcmtlckFnZW50KCk7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFdvcmtlckluc3BlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAgICAg
dm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwogICAgIHZv
aWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwotICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJy
b3JTdHJpbmcqLCBib29sIHZhbHVlKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124815</attachid>
            <date>2012-01-31 13:52:24 -0800</date>
            <delta_ts>2012-01-31 14:53:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120201015221.patch</filename>
            <type>text/plain</type>
            <size>34977</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZTcxZjE2ZjE5OGU2
MjAxZGIxZDAyMjc5Yjk3NDA4YTc3OGE1My4uMDVhMTVmNmI3YzQyNmM4N2ZmMWNlZTYwYWUxNmNj
MmRlZWYxMWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMS0zMSAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgVGhl
IHNwZWMgcmVuYW1lZCBhZGRUcmFjaygpIHRvIGFkZFRleHRUcmFjaygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBlODk1
ZjA3YWI5YTI5ZjUzNGEzNWRhZjVkZmYxOTZmNjcwM2FiNGIxLi42YWY1N2U2MjAyNDc0ZTU2YWZi
NmZkNTNkMTNlNDI2ZjUxNWRkZjA5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTUzLDE1ICsxNTMsOSBAQCBWQUxJREFU
T1JfSUZERUZfTkFNRSA9ICIhQVNTRVJUX0RJU0FCTEVEIgogY2xhc3MgRG9tYWluTmFtZUZpeGVz
OgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfZml4ZWRfZGF0YShjbHMsIGRvbWFpbl9u
YW1lKToKLSAgICAgICAgaWYgZG9tYWluX25hbWUgaW4gY2xzLmFnZW50X3R5cGVfbWFwOgotICAg
ICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSBjbHMuYWdlbnRfdHlwZV9tYXBbZG9tYWluX25hbWVd
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZ2VudF9uYW1lX3JlcyA9ICJJbnNwZWN0b3Il
c0FnZW50IiAlIGRvbWFpbl9uYW1lCi0KICAgICAgICAgZmllbGRfbmFtZV9yZXMgPSBDYXBpdGFs
aXplci51cHBlcl9jYW1lbF9jYXNlX3RvX2xvd2VyKGRvbWFpbl9uYW1lKSArICJBZ2VudCIKIAog
ICAgICAgICBjbGFzcyBSZXMob2JqZWN0KToKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFtZSA9
IGFnZW50X25hbWVfcmVzCiAgICAgICAgICAgICBza2lwX2pzX2JpbmQgPSBkb21haW5fbmFtZSBp
biBjbHMuc2tpcF9qc19iaW5kX2RvbWFpbnMKICAgICAgICAgICAgIGFnZW50X2ZpZWxkX25hbWUg
PSBmaWVsZF9uYW1lX3JlcwogCkBAIC0xODQsNyArMTc4LDYgQEAgY2xhc3MgRG9tYWluTmFtZUZp
eGVzOgogICAgICAgICByZXR1cm4gUmVzCiAKICAgICBza2lwX2pzX2JpbmRfZG9tYWlucyA9IHNl
dChbIlJ1bnRpbWUiLCAiRE9NRGVidWdnZXIiXSkKLSAgICBhZ2VudF90eXBlX21hcCA9IHsiTmV0
d29yayI6ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwgIkluc3BlY3RvciI6ICJJbnNwZWN0b3JB
Z2VudCIsIH0KIAogCiBjbGFzcyBDUGFyYW1UeXBlKG9iamVjdCk6CkBAIC0xNzQ5LDggKzE3NDIs
NiBAQCBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotJGZvcndhcmREZWNsYXJhdGlvbnMKLQogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gewpAQCAt
MjM5OSw4ICsyMzkwLDYgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgIGJhY2tlbmRfc2V0dGVyc19s
aXN0ID0gW10KICAgICBiYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCA9IFtdCiAgICAgYmFj
a2VuZF9maWVsZF9saXN0ID0gW10KLSAgICBiYWNrZW5kX2ZvcndhcmRfbGlzdCA9IFtdCi0gICAg
YmFja2VuZF9pbmNsdWRlX2xpc3QgPSBbXQogICAgIGZyb250ZW5kX2NvbnN0cnVjdG9yX2luaXRf
bGlzdCA9IFtdCiAgICAgdHlwZV9idWlsZGVyX2ZyYWdtZW50cyA9IFtdCiAgICAgdHlwZV9idWls
ZGVyX2ZvcndhcmRzID0gW10KQEAgLTI0NjEsMTAgKzI0NTAsMTEgQEAgY2xhc3MgR2VuZXJhdG9y
OgogICAgICAgICAgICAgYWdlbnRfaW50ZXJmYWNlX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9j
YW1lbF9jYXNlX3RvX3VwcGVyKGRvbWFpbl9uYW1lKSArICJDb21tYW5kSGFuZGxlciIKICAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAg
IGNsYXNzICVzIHtcbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSkKICAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIHB1YmxpYzpcbiIp
Ci0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBl
bmQoIiAgICAgICAgdmlydHVhbCB+JXMoKSB7IH1cbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSk7
CiAgICAgICAgICAgICBpZiAiY29tbWFuZHMiIGluIGpzb25fZG9tYWluOgogICAgICAgICAgICAg
ICAgIGZvciBqc29uX2NvbW1hbmQgaW4ganNvbl9kb21haW5bImNvbW1hbmRzIl06CiAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRvci5wcm9jZXNzX2NvbW1hbmQoanNvbl9jb21tYW5kLCBkb21h
aW5fbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5k
X2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiXG4gICAgcHJvdGVjdGVkOlxuIikKKyAgICAg
ICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAg
ICAgICB2aXJ0dWFsIH4lcygpIHsgfVxuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKQogICAgICAg
ICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAg
fTtcblxuIikKIAogICAgICAgICAgICAgaWYgZG9tYWluX2d1YXJkOgpAQCAtMjQ3OSw5ICsyNDY5
LDcgQEAgY2xhc3MgR2VuZXJhdG9yOgogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfY29u
c3RydWN0b3JfaW5pdF9saXN0LAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVh
bF9zZXR0ZXJzX2xpc3QsCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xp
c3QsCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9maWVsZF9saXN0LAotICAgICAgICAg
ICAgR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9saXN0LAotICAgICAgICAgICAgR2VuZXJhdG9y
LmJhY2tlbmRfaW5jbHVkZV9saXN0XQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmll
bGRfbGlzdF0KIAogICAgICAgICBmb3IganNvbl9kb21haW4gaW4gc29ydGVkX2pzb25fZG9tYWlu
czoKICAgICAgICAgICAgIGRvbWFpbl9uYW1lID0ganNvbl9kb21haW5bImRvbWFpbiJdCkBAIC0y
NDk1LDE0ICsyNDgzLDExIEBAIGNsYXNzIEdlbmVyYXRvcjoKIAogICAgICAgICAgICAgYWdlbnRf
aW50ZXJmYWNlX25hbWUgPSBDYXBpdGFsaXplci5sb3dlcl9jYW1lbF9jYXNlX3RvX3VwcGVyKGRv
bWFpbl9uYW1lKSArICJDb21tYW5kSGFuZGxlciIKIAotICAgICAgICAgICAgYWdlbnRfdHlwZV9u
YW1lID0gZG9tYWluX2ZpeGVzLmFnZW50X3R5cGVfbmFtZQogICAgICAgICAgICAgYWdlbnRfZmll
bGRfbmFtZSA9IGRvbWFpbl9maXhlcy5hZ2VudF9maWVsZF9uYW1lCiAgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QuYXBwZW5kKCIgICAgICAgICwgbV8l
cygwKSIgJSBhZ2VudF9maWVsZF9uYW1lKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRf
dmlydHVhbF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQWdl
bnQoJXMgLyogJXMgKi8qICVzKSA9IDA7IiAlIChhZ2VudF90eXBlX25hbWUsIGFnZW50X2ludGVy
ZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX3NldHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMgLyogJXMg
Ki8qICVzKSB7IEFTU0VSVCghbV8lcyk7IG1fJXMgPSAlczsgfSIgJSAoYWdlbnRfdHlwZV9uYW1l
LCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFt
ZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9maWVsZF9saXN0LmFwcGVuZCgiICAgICVzIC8qICVzICovKiBtXyVzOyIg
JSAoYWdlbnRfdHlwZV9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFt
ZSkpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJkX2xpc3QuYXBwZW5kKCJj
bGFzcyAlczsiICUgYWdlbnRfdHlwZV9uYW1lKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfaW5jbHVkZV9saXN0LmFwcGVuZCgiI2luY2x1ZGUgXCIlcy5oXCIiICUgYWdlbnRfdHlwZV9u
YW1lKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVhbF9zZXR0ZXJzX2xpc3Qu
YXBwZW5kKCIgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMqICVzKSA9IDA7IiAlIChh
Z2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCisgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdm9pZCByZWdpc3RlckFnZW50
KCVzKiAlcykgeyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFnZW50X2ludGVyZmFj
ZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9u
YW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Zp
ZWxkX2xpc3QuYXBwZW5kKCIgICAgJXMqIG1fJXM7IiAlIChhZ2VudF9pbnRlcmZhY2VfbmFtZSwg
YWdlbnRfZmllbGRfbmFtZSkpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAg
ICAgICAgICAgICBmb3IgbCBpbiByZXZlcnNlZChzb3J0ZWRfY3ljbGVfZ3VhcmRhYmxlX2xpc3Rf
bGlzdCk6CkBAIC0yODA0LDE1ICsyNzg5LDEzIEBAIGJhY2tlbmRfanNfZmlsZSA9IG9wZW4ob3V0
cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyIsICJ3IikKIGJhY2tl
bmRfaF9maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5kX2guc3Vic3RpdHV0ZShOb25lLAogICAg
IHZpcnR1YWxTZXR0ZXJzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVhbF9zZXR0ZXJzX2xp
c3QsICJcbiIpLAogICAgIGFnZW50SW50ZXJmYWNlcz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX2Fn
ZW50X2ludGVyZmFjZV9saXN0LCAiIiksCi0gICAgbWV0aG9kTmFtZXNFbnVtQ29udGVudD1qb2lu
KEdlbmVyYXRvci5tZXRob2RfbmFtZV9lbnVtX2xpc3QsICJcbiIpLAotICAgIGZvcndhcmREZWNs
YXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJkX2xpc3QsICJcbiIpKSkKKyAg
ICBtZXRob2ROYW1lc0VudW1Db250ZW50PWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9uYW1lX2VudW1f
bGlzdCwgIlxuIikpKQogCiBiYWNrZW5kX2NwcF9maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5k
X2NwcC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgY29uc3RydWN0b3JJbml0PWpvaW4oR2VuZXJhdG9y
LmJhY2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LCAiXG4iKSwKICAgICBzZXR0ZXJzPWpvaW4o
R2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LCAiXG4iKSwKICAgICBmaWVsZERlY2xhcmF0
aW9ucz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xpc3QsICJcbiIpLAogICAgIG1ldGhv
ZE5hbWVEZWNsYXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfbmFtZV9kZWNs
YXJhdGlvbl9saXN0LCAiXG4iKSwKLSAgICBpbmNsdWRlcz1qb2luKEdlbmVyYXRvci5iYWNrZW5k
X2luY2x1ZGVfbGlzdCwgIlxuIiksCiAgICAgbWV0aG9kcz1qb2luKEdlbmVyYXRvci5iYWNrZW5k
X21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LCAiXG4iKSwKICAgICBtZXRob2REZWNsYXJhdGlv
bnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfZGVjbGFyYXRpb25fbGlzdCwgIlxuIiks
CiAgICAgbWVzc2FnZUhhbmRsZXJzPWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9oYW5kbGVyX2xpc3Qs
ICJcbiIpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXgg
ZjdjOGU0OGMyNDY0YjI0ZjNjYzVlYTBiMWJjZWU0YzQ5NDdmYmZkMy4uYTM4YmUyMWVlNjkwOWI4
ZDMzNTQxYzkwYWI0NzdiZjliYjcwMDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFnZW50PiwgcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvckFnZW50PiBjcmVhdGUoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApp
bmRleCBhYzA5Mjk3NTk5MzI4ZjU0N2VlNTcxMzQ4YzRjZGQwNWI2ZDI3NDZkLi40NThkYjNiZjVi
MThiOTU5MzdkMjJkMTE4OTRmMzI2ZWY0MTUwZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gewor
Y2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OkFwcGxpY2F0aW9uQ2FjaGVDb21tYW5kSGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCmluZGV4IGIxYTU5YTM5NGI0N2RiNTM2MzI4ODI1NTkxYTQ2YTEzMTdjMjQ1
MGMuLjdjODEwOGRiMmQxZTg5MjVlY2UwNjE1ZDc2Yjc4NzRiYTVkNGI4MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlY2FsY1N0eWxlRm9yUHNldWRvU3RhdGVJ
Zk5lZWRlZChFbGVtZW50KiBlbGVtZW50LCBJbnNwCiAgICAgICAgIGVsZW1lbnQtPm93bmVyRG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgYm9vbCogbmVlZFBzZXVkbywgYm9vbCogbmVlZElu
aGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBp
bmhlcml0ZWRFbnRyaWVzKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29sKiBuZWVk
UHNldWRvLCBjb25zdCBib29sKiBuZWVkSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVsZXMs
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpCiB7CiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAo
IWVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
CmluZGV4IDcwYjJkZDkwYTQzNzRlYjBjODJkNzY3OWY3ODlhYmEyZGNiOWI1ZTkuLjY4ZGFjNzk2
NTNhNzMyMjU3NGQzZjgxNGViNDU0Y2RkMGMzNjQ1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFNlbGVj
dG9yUHJvZmlsZTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLWNsYXNzIEluc3BlY3RvckNT
U0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgeworY2xhc3MgSW5zcGVjdG9yQ1NT
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNTU0FnZW50PiwgcHVi
bGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpDU1NDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBDU1NTdHlsZVJ1bGUq
IGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUqKTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mIHN0eWxlKTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaW5s
aW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQg
Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBib29sKiBpbmNsdWRl
UHNldWRvLCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBt
YXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVsZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOworICAgIHZvaWQgZ2V0TWF0
Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29sKiBpbmNsdWRl
UHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVs
ZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOwogICAgIHZvaWQg
Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBz
dHlsZVNoZWV0SW5mb3MpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0
KTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA3MTIzYmU4MGM3ZmI0MDhlZTg4
NWQ4NDc4YjE1MTY3YjBkYjU1YWFkLi5mMmJlYmQyMzUwY2QzNjg5OTRlMDYxM2NhNTc2YmM3Y2Ix
N2ZjMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckNvbnNvbGVBZ2VudD4geworY2xhc3Mg
SW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JDb25zb2xlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNvbnNv
bGVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29u
c29sZUFnZW50KTsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAy
OGMwZjNiN2QwMTk5Nzk3ZjExNjE5MjU1MGY0ZGNiNzcwY2NhNTMxLi5hYjNiNDlkM2I4ODcwMTZh
NTE2N2UzYzExNDA1NTg1NjhhOWRjZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTk3NSw3ICs5NzUsNyBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQg
d2lkdGgsIGludAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKICAgICBF
cnJvclN0cmluZyosCiAgICAgaW50IG5vZGVJZCwKLSAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBoaWdobGlnaHRDb25maWcpCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIGhpZ2hsaWdodENvbmZpZykKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChu
b2RlSWQpKSB7CiAgICAgICAgIGlmIChzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhoaWdobGln
aHRDb25maWcuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IDAxYzQ5ZGNjYzgwNWYxMjU3MTdkZjFjZmFiZWEyMGY3ZWU2Y2ZkZjUu
LmE0NjBkYzI3N2FiMDc0Y2EwMWQ1NTdiMmZhOTE0NDYzYzdmZTBhM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC04OSw3ICs4OSw3IEBAIHN0
cnVjdCBFdmVudExpc3RlbmVySW5mbyB7CiAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciBl
dmVudExpc3RlbmVyVmVjdG9yOwogfTsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTUFnZW50PiB7CitjbGFzcyBJbnNwZWN0
b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NQWdlbnQ+
LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRPTUNvbW1hbmRIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01BZ2VudCk7CiBwdWJsaWM6CiAg
ICAgc3RydWN0IERPTUxpc3RlbmVyIHsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcq
KTsKICAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKLSAgICB2b2lk
IGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBoaWdobGlnaHRDb25maWcpOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBo
aWdobGlnaHRDb25maWcpOwogICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xv
ciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CiAgICAgdm9p
ZCBtb3ZlVG8oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25z
dCBpbnQqIGNvbnN0IGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRl
eCBjNDlmNmJlYzU4OTM1YWJhY2Q1Y2Q4Njc0Yjc4MjdiZjRlMmQ1NjdjLi5hNGE5YjBkMzA2YzU1
ODMxZDZjYWIyY2MwZDM2NTliNDE2NGY3MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVu
ZXIgeworY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpE
T01EZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiwgSW5zcGVjdG9yQWdlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBiZDFkNmE3MTljZThiMjE0YzA1MmI5MDlj
MzhmMDg3ZDYzZGM5Njc4Li41ZmUwM2YyOGE5OTU5ZmQ1YjY5YmNjMjc2NDE0ZTVhYTU0NThmYjNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFN0b3JhZ2VBcmVhOwogCiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDog
cHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IHsKK2Ns
YXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpET01TdG9yYWdlQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApp
bmRleCBjOWMyYzUzYzQ0ZDVkMzU0MzEwODUwMDdiODljMjliMWIxMDI2ODA2Li4zNzNlYjJmNTFh
ODBiZjVhNzZhNWM3ZTMwMWNhOWQxNTY1OTM4MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xh
c3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQg
OiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+LCBwdWJs
aWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXIgewog
cHVibGljOgogICAgIGNsYXNzIEZyb250ZW5kUHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmMzJjZWEz
ZDY1MWM2YWI2Mzg2NGZlZDU2ZTAyZmUxZDRjOTQ2YmMzLi4zZjE4OTJjNDFkNjc0OTQ1YjM4Nzcz
YjYyMDI5ZTc3YjA0ZDQzYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGJv
b2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGxvY2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsQ29uZGl0aW9uLCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9u
LCBTdHJpbmcqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGFjdHVh
bExvY2F0aW9uKQogewogICAgIFN0cmluZyBzY3JpcHRJZDsKICAgICBpbnQgbGluZU51bWJlcjsK
QEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcAogICAgIG1fYnJlYWtw
b2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMucmVtb3ZlKGRlYnVnU2VydmVyQnJlYWtw
b2ludElkc0l0ZXJhdG9yKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250
aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRp
bnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBsb2NhdGlvbikKIHsKICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElkLmlzRW1wdHkoKSkgewogICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJl
bW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXgg
OGU3MmViZTVhYTIyNmNhMWQ0OTM1MjYzNjI5MmFiZjA0OTc5OWNhNS4uNTFlNGMxNWRhZDZhYTFm
MmU4OWYzYmJmNDNkZWM5MWJkZDM0MWVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC01OCw3ICs1OCw3IEBAIGNsYXNzIFNj
cmlwdFZhbHVlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudD4sIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpEZWJ1Z2dlckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJhY2t0cmFjZU9iamVjdEdyb3Vw
OwpAQCAtODIsOSArODIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2
ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAogICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5
VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50
KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25h
bENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IGxvY2F0aW9ucyk7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlv
bmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIGFjdHVhbExvY2F0aW9uKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKLSAgICB2b2lkIGNvbnRpbnVl
VG9Mb2NhdGlvbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2Nh
dGlvbik7CisgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCiAgICAgdm9pZCBzZWFyY2hJbkNv
bnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOwogICAg
IHZvaWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
ZCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGaWxlU3lzdGVtQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQuaAppbmRleCAwMDNhOWM1NTlmOGUxNjYwOTJiNDllOGZiYmE2NThk
Yzc0Njg1NWEzLi4yZjk2ZDZmYzJkN2RlNjk4YjI5OWNlMTBlZjExYTdkMTZiNDEzNzcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5z
cGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCi1jbGFzcyBJbnNwZWN0
b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudD4geworY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+LCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkZpbGVTeXN0ZW1Db21tYW5kSGFuZGxlciB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgdmlydHVhbCB+
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGU4Yzc3MTYxZDUxZTNlNGJmYmRl
MjYyOTYzZTg5ZDM4MTM0NGI3YmYuLjUwYWNmZWMxYTM4ZmEyOWU0ZTI2ZjU4MWYzY2EzMmUyMjBk
NDA5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dD4geworY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyOjpJbmRleGVkREJDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
RnJvbnRlbmRQcm92aWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaAppbmRleCBhYjUzMDVlZTZlNGM3NWVjNWJlY2Q1ZjIzMDc3NjFhMGUx
MGI5ZGNiLi4zMjBhYmQ5OGUzNDVhYTIwZTJlYTBlZjE3MWVhNGQ1MjlmM2IyYjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3Rvck1lbW9yeUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+LCBwdWJsaWMgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6Ok1lbW9yeUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JNZW1vcnlBZ2VudCk7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2VudEludGVyZmFjZT4gPiBJbnNwZWN0b3JB
Z2VudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgK
aW5kZXggZDYxYzA5MzllYzAxOGUwZjAxNjRjOWMzNjcxNmUxODY4NzRmNGZkOC4uZGIwZGQ0ZDUy
MjFmMDk1MWFiNTg1ZmJhZTRhNDExNDk2YzVhMGVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclBhZ2VBZ2Vu
dD4geworY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JQYWdlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6
OlBhZ2VDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9y
UGFnZUFnZW50KTsKIHB1YmxpYzoKICAgICBlbnVtIFJlc291cmNlVHlwZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
ZmRkNTZhODY1YmRiMTBlN2EyYzE0Y2NlY2Q5Mzg1YjJlMGZlMzFiMy4uNmFkYWEzNDE0NTZjMmM0
Mzg2MDA5ZTM5YmQxZDgxNTUzNzU4ODM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtMjE3LDggKzIxNyw5IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlCiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6
Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlk
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKK3ZvaWQgSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlw
ZSwgaW50IHJhd1VpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpCiB7
CisgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhd1VpZCk7CiAgICAg
aWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgUHJvZmlsZXNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9wcm9maWxlcy5maW5kKHVpZCk7CiAgICAgICAgIGlmIChpdCAhPSBtX3Byb2Zp
bGVzLmVuZCgpKSB7CkBAIC0yNDAsOCArMjQxLDkgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OjpnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ24K
ICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKQordm9pZCBJbnNw
ZWN0b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBpbnQgcmF3VWlkKQogeworICAgIHVuc2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVUeXBlKSB7CiAg
ICAgICAgIGlmIChtX3Byb2ZpbGVzLmNvbnRhaW5zKHVpZCkpCiAgICAgICAgICAgICBtX3Byb2Zp
bGVzLnJlbW92ZSh1aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmgKaW5kZXggMDJiY2I3YjQzMjhhNzVkMGFkMmQ1NmZkNDQ3YmYxZjdl
ODkyYWU1Yi4uODRmYTQ2NmJjZDY4NzQ4M2QwNDA5ZjZmMjZhOTJmODFhM2Q2OGMyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCkBA
IC01NSw3ICs1NSw3IEBAIGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxlckFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JQ
cm9maWxlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQcm9maWxl
ckFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpQcm9maWxlckNvbW1h
bmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQcm9maWxlckFn
ZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqLCBQYWdlKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqKTsKQEAgLTgxLDkgKzgxLDkgQEAgcHVibGljOgogICAgIHZvaWQgZW5h
YmxlKGJvb2wgc2tpcFJlY29tcGlsZSk7CiAgICAgYm9vbCBlbmFibGVkKCkgeyByZXR1cm4gbV9l
bmFibGVkOyB9CiAgICAgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
Ym9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpOwotICAgIHZvaWQgZ2V0UHJvZmls
ZUhlYWRlcnMoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBoZWFk
ZXJzKTsKLSAgICB2b2lkIGdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVP
YmplY3QpOwotICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0
IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKTsKKyAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJz
KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaGVhZGVycyk7CisgICAgdm9p
ZCBnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7CisgICAgdm9pZCByZW1vdmVQ
cm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgdWlkKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggZDhlNGM2OTAyYmQzYjFlY2MwODY5
MmYxZjJkODFhZTU3YWY3ZjBkZC4uY2EzYjBlOTI1ZGNjNTU3YmRiMGJjMWZjOTBiM2ZjYThlNGU1
NTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtNDczLDcgKzQ3Myw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6c2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVz
CiAgICAgbV9zdGF0ZS0+c2V0U3RyaW5nKFJlc291cmNlQWdlbnRTdGF0ZTo6dXNlckFnZW50T3Zl
cnJpZGUsIHVzZXJBZ2VudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0
RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhUVFBIZWFk
ZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhlYWRlcnMp
CiB7CiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KFJlc291cmNlQWdlbnRTdGF0ZTo6ZXh0cmFSZXF1
ZXN0SGVhZGVycywgaGVhZGVycyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA4ZjZmNzViZjI3YjhiOTY0YmQ0MzNjN2I4
MjQ3Yzk2NTJiZjE0MjU1Li4xMGRkMDYyMmNiZGQ2ZDlhYzA5MWQwYmEyMjliNTkzZWRiZjkxOWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSZXNvdXJjZUFnZW50
PiB7CitjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpOZXR3b3JrQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvclJlc291cmNlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKICAgICB7CkBAIC0x
MjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CiAg
ICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnRPdmVy
cmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2b2lkIHNl
dEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4pOworICAgIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICB2b2lkIGNsZWFyQ2FjaGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsUHJlc2VydmVkTG9hZGVySWQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXggNzlhMjAyYjg5
ZGE3MTNjOTIzOThkNjhkMWYyMjBkMzkzODA4OWJhMC4uOTcyYTdkODhkZTc0MDg5MTNjYjBiZWU0
YjkzYzM0ZTY3MjVhMjAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBXb3JrZXJDb250ZXh0
OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUnVudGlt
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+
IHsKK2NsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdl
bnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOjpSdW50aW1lQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
c3BlY3RvclJ1bnRpbWVBZ2VudCk7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUnVu
dGltZUFnZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAKaW5kZXggNWMwYWNkMThiNjQxOWU2MTdlOTNmOGYwOWY3OWYyOTZi
YzQ2YjY0Zi4uZDIzYzFlYTIxZGI4ZGY1OWJmMWQ5MDBmYTQxNTAyM2ZlOGZjNzQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cApAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzdG9y
ZSgpCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9y
U3RyaW5nKiwgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQog
ewogICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggOTJhOTcwY2Q5
NTA0YjZjMGU4MzA5NjYzNzNmZmZiYWZlZmI5OGU2OC4uNjA2MTljY2RhMjEyOWE2N2IwNTgzMDgz
ZjFmOGU1NmIxYzU2OTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JU
aW1lbGluZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50PiwgU2NyaXB0R0NFdmVudExpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+
LCBTY3JpcHRHQ0V2ZW50TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6VGltZWxpbmVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yTWVtb3J5QWdlbnQq
IG1lbW9yeUFnZW50KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOwogCi0gICAgdm9p
ZCBzdGFydChFcnJvclN0cmluZyosIGludCogbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIHZvaWQg
c3RhcnQoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKTsKICAgICB2
b2lkIHN0b3AoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHNldEluY2x1ZGVNZW1vcnlEZXRhaWxz
KEVycm9yU3RyaW5nKiwgYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDc1MTFkYTFkNjkyZjhjOWNjNDIwNWU3OTM2
MTdmMTlmMjg4NzYxOWYuLjFiMzg1OTU3MWNhZmMyM2U0YzU0MWQzNDljMjYwZGExZmU0ZjNiOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50
LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nv
bm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtlcklkCiAgICAgICAg
ICplcnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdl
bnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgd29ya2VySWQs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKQordm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3Jr
ZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpCiB7CiAgICAgV29y
a2VyRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9pZFRvQ2hhbm5lbC5nZXQod29ya2VySWQp
OwogICAgIGlmIChjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuaAppbmRleCA1OTZmZjE2YWYzMzVlMjU2YTVlZDkyOTI2M2MwZTEwMTAx
MWY0YTQwLi5kNDA0Mjc4OTUwZGQ4OTM0ZTViMzI0YTkzNzg2OGVjNTJhOTM0OWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3Rvcldvcmtl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXb3JrZXJBZ2VudD4s
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29tbWFuZEhhbmRsZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgfkluc3Bl
Y3RvcldvcmtlckFnZW50KCk7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFdvcmtlckluc3BlY3Rpb25FbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAgICAg
dm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwogICAgIHZv
aWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwotICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJy
b3JTdHJpbmcqLCBib29sIHZhbHVlKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124828</attachid>
            <date>2012-01-31 14:53:27 -0800</date>
            <delta_ts>2012-02-01 10:19:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120201025322.patch</filename>
            <type>text/plain</type>
            <size>35161</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZTcxZjE2ZjE5OGU2
MjAxZGIxZDAyMjc5Yjk3NDA4YTc3OGE1My4uMDVhMTVmNmI3YzQyNmM4N2ZmMWNlZTYwYWUxNmNj
MmRlZWYxMWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMS0zMSAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgVGhl
IHNwZWMgcmVuYW1lZCBhZGRUcmFjaygpIHRvIGFkZFRleHRUcmFjaygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBlODk1
ZjA3YWI5YTI5ZjUzNGEzNWRhZjVkZmYxOTZmNjcwM2FiNGIxLi45MmJmMGRlNjk3NmU2ZTQ1YTk4
MTViY2M3NmVjYjVlYmUyNmMzNTdlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTUzLDE1ICsxNTMsOSBAQCBWQUxJREFU
T1JfSUZERUZfTkFNRSA9ICIhQVNTRVJUX0RJU0FCTEVEIgogY2xhc3MgRG9tYWluTmFtZUZpeGVz
OgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfZml4ZWRfZGF0YShjbHMsIGRvbWFpbl9u
YW1lKToKLSAgICAgICAgaWYgZG9tYWluX25hbWUgaW4gY2xzLmFnZW50X3R5cGVfbWFwOgotICAg
ICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSBjbHMuYWdlbnRfdHlwZV9tYXBbZG9tYWluX25hbWVd
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZ2VudF9uYW1lX3JlcyA9ICJJbnNwZWN0b3Il
c0FnZW50IiAlIGRvbWFpbl9uYW1lCi0KICAgICAgICAgZmllbGRfbmFtZV9yZXMgPSBDYXBpdGFs
aXplci51cHBlcl9jYW1lbF9jYXNlX3RvX2xvd2VyKGRvbWFpbl9uYW1lKSArICJBZ2VudCIKIAog
ICAgICAgICBjbGFzcyBSZXMob2JqZWN0KToKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFtZSA9
IGFnZW50X25hbWVfcmVzCiAgICAgICAgICAgICBza2lwX2pzX2JpbmQgPSBkb21haW5fbmFtZSBp
biBjbHMuc2tpcF9qc19iaW5kX2RvbWFpbnMKICAgICAgICAgICAgIGFnZW50X2ZpZWxkX25hbWUg
PSBmaWVsZF9uYW1lX3JlcwogCkBAIC0xODQsNyArMTc4LDYgQEAgY2xhc3MgRG9tYWluTmFtZUZp
eGVzOgogICAgICAgICByZXR1cm4gUmVzCiAKICAgICBza2lwX2pzX2JpbmRfZG9tYWlucyA9IHNl
dChbIlJ1bnRpbWUiLCAiRE9NRGVidWdnZXIiXSkKLSAgICBhZ2VudF90eXBlX21hcCA9IHsiTmV0
d29yayI6ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwgIkluc3BlY3RvciI6ICJJbnNwZWN0b3JB
Z2VudCIsIH0KIAogCiBjbGFzcyBDUGFyYW1UeXBlKG9iamVjdCk6CkBAIC0xNzQ5LDggKzE3NDIs
NiBAQCBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotJGZvcndhcmREZWNsYXJhdGlvbnMKLQogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gewpAQCAt
MTgwNSw3ICsxNzk2LDYgQEAgJG1ldGhvZE5hbWVzRW51bUNvbnRlbnQKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSRpbmNsdWRlcwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTIzOTksOCArMjM4OSw2IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICBiYWNr
ZW5kX3NldHRlcnNfbGlzdCA9IFtdCiAgICAgYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3Qg
PSBbXQogICAgIGJhY2tlbmRfZmllbGRfbGlzdCA9IFtdCi0gICAgYmFja2VuZF9mb3J3YXJkX2xp
c3QgPSBbXQotICAgIGJhY2tlbmRfaW5jbHVkZV9saXN0ID0gW10KICAgICBmcm9udGVuZF9jb25z
dHJ1Y3Rvcl9pbml0X2xpc3QgPSBbXQogICAgIHR5cGVfYnVpbGRlcl9mcmFnbWVudHMgPSBbXQog
ICAgIHR5cGVfYnVpbGRlcl9mb3J3YXJkcyA9IFtdCkBAIC0yNDYxLDEwICsyNDQ5LDExIEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gQ2FwaXRh
bGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQ29tbWFuZEhh
bmRsZXIiCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlz
dC5hcHBlbmQoIiAgICBjbGFzcyAlcyB7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCiAgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAg
ICBwdWJsaWM6XG4iKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCIgICAgICAgIHZpcnR1YWwgfiVzKCkgeyB9XG4iICUgYWdlbnRfaW50
ZXJmYWNlX25hbWUpOwogICAgICAgICAgICAgaWYgImNvbW1hbmRzIiBpbiBqc29uX2RvbWFpbjoK
ICAgICAgICAgICAgICAgICBmb3IganNvbl9jb21tYW5kIGluIGpzb25fZG9tYWluWyJjb21tYW5k
cyJdOgogICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IucHJvY2Vzc19jb21tYW5kKGpzb25f
Y29tbWFuZCwgZG9tYWluX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpCisgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIlxuICAgIHByb3RlY3Rl
ZDpcbiIpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlz
dC5hcHBlbmQoIiAgICAgICAgdmlydHVhbCB+JXMoKSB7IH1cbiIgJSBhZ2VudF9pbnRlcmZhY2Vf
bmFtZSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0
LmFwcGVuZCgiICAgIH07XG5cbiIpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKQEAg
LTI0NzksOSArMjQ2OCw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCwKICAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX3ZpcnR1YWxfc2V0dGVyc19saXN0LAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfc2V0dGVyc19saXN0LAotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmllbGRfbGlz
dCwKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZvcndhcmRfbGlzdCwKLSAgICAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2luY2x1ZGVfbGlzdF0KKyAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2ZpZWxkX2xpc3RdCiAKICAgICAgICAgZm9yIGpzb25fZG9tYWluIGluIHNvcnRl
ZF9qc29uX2RvbWFpbnM6CiAgICAgICAgICAgICBkb21haW5fbmFtZSA9IGpzb25fZG9tYWluWyJk
b21haW4iXQpAQCAtMjQ5NSwxNCArMjQ4MiwxMSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAg
ICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2Fz
ZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQ29tbWFuZEhhbmRsZXIiCiAKLSAgICAgICAgICAg
IGFnZW50X3R5cGVfbmFtZSA9IGRvbWFpbl9maXhlcy5hZ2VudF90eXBlX25hbWUKICAgICAgICAg
ICAgIGFnZW50X2ZpZWxkX25hbWUgPSBkb21haW5fZml4ZXMuYWdlbnRfZmllbGRfbmFtZQogICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LmFwcGVuZCgi
ICAgICAgICAsIG1fJXMoMCkiICUgYWdlbnRfZmllbGRfbmFtZSkKLSAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX3ZpcnR1YWxfc2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckFnZW50KCVzIC8qICVzICovKiAlcykgPSAwOyIgJSAoYWdlbnRfdHlwZV9uYW1l
LCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdm9pZCByZWdpc3RlckFn
ZW50KCVzIC8qICVzICovKiAlcykgeyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFn
ZW50X3R5cGVfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFn
ZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQotICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmllbGRfbGlzdC5hcHBlbmQoIiAgICAlcyAvKiAl
cyAqLyogbV8lczsiICUgKGFnZW50X3R5cGVfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFn
ZW50X2ZpZWxkX25hbWUpKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9s
aXN0LmFwcGVuZCgiY2xhc3MgJXM7IiAlIGFnZW50X3R5cGVfbmFtZSkKLSAgICAgICAgICAgIEdl
bmVyYXRvci5iYWNrZW5kX2luY2x1ZGVfbGlzdC5hcHBlbmQoIiNpbmNsdWRlIFwiJXMuaFwiIiAl
IGFnZW50X3R5cGVfbmFtZSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1YWxf
c2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckFnZW50KCVzKiAl
cykgPSAwOyIgJSAoYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQorICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZvaWQg
cmVnaXN0ZXJBZ2VudCglcyogJXMpIHsgQVNTRVJUKCFtXyVzKTsgbV8lcyA9ICVzOyB9IiAlIChh
Z2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwg
YWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9maWVsZF9saXN0LmFwcGVuZCgiICAgICVzKiBtXyVzOyIgJSAoYWdlbnRfaW50
ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQogCiAgICAgICAgICAgICBpZiBkb21haW5f
Z3VhcmQ6CiAgICAgICAgICAgICAgICAgZm9yIGwgaW4gcmV2ZXJzZWQoc29ydGVkX2N5Y2xlX2d1
YXJkYWJsZV9saXN0X2xpc3QpOgpAQCAtMjgwNCwxNSArMjc4OCwxMyBAQCBiYWNrZW5kX2pzX2Zp
bGUgPSBvcGVuKG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMi
LCAidyIpCiBiYWNrZW5kX2hfZmlsZS53cml0ZShUZW1wbGF0ZXMuYmFja2VuZF9oLnN1YnN0aXR1
dGUoTm9uZSwKICAgICB2aXJ0dWFsU2V0dGVycz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1
YWxfc2V0dGVyc19saXN0LCAiXG4iKSwKICAgICBhZ2VudEludGVyZmFjZXM9am9pbihHZW5lcmF0
b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdCwgIiIpLAotICAgIG1ldGhvZE5hbWVzRW51
bUNvbnRlbnQ9am9pbihHZW5lcmF0b3IubWV0aG9kX25hbWVfZW51bV9saXN0LCAiXG4iKSwKLSAg
ICBmb3J3YXJkRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9saXN0
LCAiXG4iKSkpCisgICAgbWV0aG9kTmFtZXNFbnVtQ29udGVudD1qb2luKEdlbmVyYXRvci5tZXRo
b2RfbmFtZV9lbnVtX2xpc3QsICJcbiIpKSkKIAogYmFja2VuZF9jcHBfZmlsZS53cml0ZShUZW1w
bGF0ZXMuYmFja2VuZF9jcHAuc3Vic3RpdHV0ZShOb25lLAogICAgIGNvbnN0cnVjdG9ySW5pdD1q
b2luKEdlbmVyYXRvci5iYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCwgIlxuIiksCiAgICAg
c2V0dGVycz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX3NldHRlcnNfbGlzdCwgIlxuIiksCiAgICAg
ZmllbGREZWNsYXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9maWVsZF9saXN0LCAiXG4i
KSwKICAgICBtZXRob2ROYW1lRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfbWV0
aG9kX25hbWVfZGVjbGFyYXRpb25fbGlzdCwgIlxuIiksCi0gICAgaW5jbHVkZXM9am9pbihHZW5l
cmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3QsICJcbiIpLAogICAgIG1ldGhvZHM9am9pbihHZW5l
cmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgIlxuIiksCiAgICAgbWV0
aG9kRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfbWV0aG9kX2RlY2xhcmF0aW9u
X2xpc3QsICJcbiIpLAogICAgIG1lc3NhZ2VIYW5kbGVycz1qb2luKEdlbmVyYXRvci5tZXRob2Rf
aGFuZGxlcl9saXN0LCAiXG4iKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oCmluZGV4IGY3YzhlNDhjMjQ2NGIyNGYzY2M1ZWEwYjFiY2VlNGM0OTQ3ZmJmZDMuLmEz
OGJlMjFlZTY5MDliOGQzMzU0MWM5MGFiNDc3YmY5YmI3MDAzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBhZ2U7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQWdlbnQ+IHsKK2NsYXNzIEluc3Bl
Y3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZEhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFnZW50KTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4gY3JlYXRlKFBhZ2UqIHBhZ2UsIElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgKaW5kZXggYWMwOTI5NzU5OTMyOGY1NDdlZTU3MTM0OGM0Y2RkMDViNmQyNzQ2
ZC4uNDU4ZGIzYmY1YjE4Yjk1OTM3ZDIyZDExODk0ZjMyNmVmNDE1MGQ3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiwgcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpBcHBsaWNhdGlvbkNhY2hlQ29tbWFuZEhh
bmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiMWE1OWEzOTRiNDdkYjUzNjMyODgyNTU5
MWE0NmExMzE3YzI0NTBjLi43YzgxMDhkYjJkMWU4OTI1ZWNlMDYxNWQ3NmI3ODc0YmE1ZDRiODBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
QEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZWNhbGNTdHlsZUZv
clBzZXVkb1N0YXRlSWZOZWVkZWQoRWxlbWVudCogZWxlbWVudCwgSW5zcAogICAgICAgICBlbGVt
ZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIGJvb2wqIG5lZWRQc2V1ZG8s
IGJvb2wqIG5lZWRJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NS
dWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgaW5oZXJpdGVkRW50cmllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29u
c3QgYm9vbCogbmVlZFBzZXVkbywgY29uc3QgYm9vbCogbmVlZEluaGVyaXRlZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBw
c2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKQog
ewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CiAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAppbmRleCA3MGIyZGQ5MGE0Mzc0ZWIwYzgyZDc2NzlmNzg5YWJhMmRjYjli
NWU5Li42OGRhYzc5NjUzYTczMjI1NzRkM2Y4MTRlYjQ1NGNkZDBjMzY0NTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBTZWxlY3RvclByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFz
cyBJbnNwZWN0b3JDU1NBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
Q1NTQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIHsKK2NsYXNz
IEluc3BlY3RvckNTU0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JD
U1NBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIsIHB1YmxpYyBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q1NTQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0FnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Q1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlKik7CkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9D
bGFzc2VzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdHlsZSk7CiAgICAgdm9pZCBnZXRJbmxp
bmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhdHRyaWJ1dGVz
KTsKLSAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3Nlcywg
Ym9vbCogaW5jbHVkZVBzZXVkbywgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1
ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAg
ICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29uc3Qg
Ym9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVz
KTsKICAgICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgc3R5bGVTaGVldEluZm9zKTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzEyM2Jl
ODBjN2ZiNDA4ZWU4ODVkODQ3OGIxNTE2N2IwZGI1NWFhZC4uZjJiZWJkMjM1MGNkMzY4OTk0ZTA2
MTNjYTU3NmJjN2NiMTdmYzEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTY3JpcHRQcm9m
aWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ29u
c29sZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDb25zb2xlQWdl
bnQ+IHsKK2NsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yQ29uc29sZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpDb25zb2xlQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvckNvbnNvbGVBZ2VudCk7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ29uc29sZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0
TWFuYWdlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggMjhjMGYzYjdkMDE5OTc5N2YxMTYxOTI1NTBmNGRjYjc3MGNjYTUzMS4uYWIz
YjQ5ZDNiODg3MDE2YTUxNjdlM2MxMTQwNTU4NTY4YTlkY2UxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05NzUsNyArOTc1LDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4
LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dE5vZGUoCiAgICAgRXJyb3JTdHJpbmcqLAogICAgIGludCBub2RlSWQsCi0gICAgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gaGlnaGxpZ2h0Q29uZmlnKQorICAgIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgaWYgKE5vZGUqIG5vZGUg
PSBub2RlRm9ySWQobm9kZUlkKSkgewogICAgICAgICBpZiAoc2V0SGlnaGxpZ2h0RGF0YUZyb21D
b25maWcoaGlnaGxpZ2h0Q29uZmlnLmdldCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAwMWM0OWRjY2M4MDVmMTI1NzE3ZGYxY2ZhYmVh
MjBmN2VlNmNmZGY1Li5hNDYwZGMyNzdhYjA3NGNhMDFkNTU3YjJmYTkxNDQ2M2M3ZmUwYTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtODks
NyArODksNyBAQCBzdHJ1Y3QgRXZlbnRMaXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlz
dGVuZXJWZWN0b3IgZXZlbnRMaXN0ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRP
TUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01BZ2VudD4gewor
Y2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3Bl
Y3RvckRPTUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01Db21t
YW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQp
OwogcHVibGljOgogICAgIHN0cnVjdCBET01MaXN0ZW5lciB7CkBAIC0xMzksNyArMTM5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0
KEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xv
cik7Ci0gICAgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICB2b2lkIGhp
Z2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnKTsKICAgICB2b2lkIGhpZ2hsaWdodEZyYW1lKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29s
b3IpOwogICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdl
dE5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgKaW5kZXggYzQ5ZjZiZWM1ODkzNWFiYWNkNWNkODY3NGI3ODI3YmY0ZTJkNTY3Yy4u
YTRhOWIwZDMwNmM1NTgzMWQ2Y2FiMmNjMGQzNjU5YjQxNjRmNzFjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC01
NCw3ICs1NCw3IEBAIGNsYXNzIE5vZGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwog
Ci1jbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiwgcHVibGljIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6Okxpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6RE9NRGVidWdnZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCosIEluc3BlY3RvckFnZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggYmQxZDZhNzE5Y2U4
YjIxNGMwNTJiOTA5YzM4ZjA4N2Q2M2RjOTY3OC4uNWZlMDNmMjhhOTk1OWZkNWI2OWJjYzI3NjQx
NGU1YWE1NDU4ZmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTdG9yYWdlQXJl
YTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50PEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6RE9NU3RvcmFnZUNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3Rh
dGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgKaW5kZXggYzljMmM1M2M0NGQ1ZDM1NDMxMDg1MDA3Yjg5YzI5YjFiMTAyNjgw
Ni4uMzczZWIyZjUxYTgwYmY1YTc2YTVjN2UzMDFjYTlkMTU2NTkzODI1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JE
YXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpEYXRhYmFzZUNvbW1h
bmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggZjMyY2VhM2Q2NTFjNmFiNjM4NjRmZWQ1NmUwMmZlMWQ0Yzk0NmJjMy4uM2YxODkyYzQx
ZDY3NDk0NWIzODc3M2I2MjAyOWU3N2IwNGQ0M2IxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjQ0LDcgKzI0NCw3
IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5n
KiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRp
b25hbENvbmRpdGlvbiwgU3RyaW5nKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBhY3R1YWxMb2NhdGlvbikKIHsKICAgICBTdHJpbmcgc2NyaXB0SWQ7CiAgICAgaW50
IGxpbmVOdW1iZXI7CkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3AK
ICAgICBtX2JyZWFrcG9pbnRJZFRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnJlbW92ZShkZWJ1
Z1NlcnZlckJyZWFrcG9pbnRJZHNJdGVyYXRvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pCiB7CiAgICAgaWYgKCFtX2NvbnRp
bnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2lu
dElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCmluZGV4IDhlNzJlYmU1YWEyMjZjYTFkNDkzNTI2MzYyOTJhYmYwNDk3OTljYTUuLjUx
ZTRjMTVkYWQ2YWExZjJlODlmM2JiZjQzZGVjOTFiZGQzNDFlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNTgsNyArNTgs
NyBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAK
LWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7Citj
bGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50PiwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1Ymxp
YyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGVidWdnZXJDb21tYW5kSGFuZGxlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBiYWNrdHJh
Y2VPYmplY3RHcm91cDsKQEAgLTgyLDkgKzgyLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QnJl
YWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSk7CiAKICAgICB2b2lkIHNl
dEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVn
ZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5n
KiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdm9pZCBzZXRCcmVha3BvaW50
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGFjdHVhbExvY2F0aW9uKTsKICAgICB2b2lkIHJlbW92ZUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7Ci0gICAg
dm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gbG9jYXRpb24pOworICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3Ry
aW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKTsKIAogICAgIHZv
aWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mKTsKICAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29u
c3QgcHJldmlldywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmgKaW5kZXggMDAzYTljNTU5ZjhlMTY2MDky
YjQ5ZThmYmJhNjU4ZGM3NDY4NTVhMy4uMmY5NmQ2ZmMyZDdkZTY5OGIyOTljZTEwZWYxMWE3ZDE2
YjQxMzc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZDsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAot
Y2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1B
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50
PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVtQ29tbWFuZEhh
bmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwog
ICAgIHZpcnR1YWwgfkluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCBlOGM3NzE2
MWQ1MWUzZTRiZmJkZTI2Mjk2M2U4OWQzODEzNDRiN2JmLi41MGFjZmVjMWEzOGZhMjllNGUyNmY1
ODFmM2NhMzJlMjIwZDQwOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXIgewogcHVibGlj
OgogICAgIGNsYXNzIEZyb250ZW5kUHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggYWI1MzA1ZWU2ZTRjNzVlYzViZWNk
NWYyMzA3NzYxYTBlMTBiOWRjYi4uMzIwYWJkOThlMzQ1YWEyMGUyZWEwZWYxNzFlYTRkNTI5ZjNi
MmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9y
eUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJy
b3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yTWVtb3J5
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50Piwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZW1vcnlDb21tYW5kSGFuZGxlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGlj
OgogICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+
ID4gSW5zcGVjdG9yQWdlbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCmluZGV4IGQ2MWMwOTM5ZWMwMThlMGYwMTY0YzljMzY3MTZlMTg2ODc0ZjRm
ZDguLmRiMGRkNGQ1MjIxZjA5NTFhYjU4NWZiYWU0YTQxMTQ5NmM1YTBlZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTYwLDcgKzYwLDcg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAot
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JQYWdlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUGFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyOjpQYWdlQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CiBwdWJsaWM6CiAgICAgZW51bSBSZXNvdXJjZVR5cGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwCmluZGV4IGZkZDU2YTg2NWJkYjEwZTdhMmMxNGNjZWNkOTM4NWIyZTBmZTMxYjMuLjZh
ZGFhMzQxNDU2YzJjNDM4NjAwOWUzOWJkMWQ4MTU1Mzc1ODgzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTIxNyw4
ICsyMTcsOSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUs
IHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpCit2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGludCByYXdVaWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBwcm9m
aWxlT2JqZWN0KQogeworICAgIHVuc2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YXdVaWQpOwogICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVUeXBlKSB7CiAgICAgICAgIFByb2Zp
bGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogICAgICAgICBpZiAo
aXQgIT0gbV9wcm9maWxlcy5lbmQoKSkgewpAQCAtMjQwLDggKzI0MSw5IEBAIHZvaWQgSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
dHlwZSwgdW5zaWduCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJl
bW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVp
ZCkKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHJhd1VpZCkKIHsKKyAgICB1bnNpZ25lZCB1aWQg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKICAgICBpZiAodHlwZSA9PSBDUFVQcm9m
aWxlVHlwZSkgewogICAgICAgICBpZiAobV9wcm9maWxlcy5jb250YWlucyh1aWQpKQogICAgICAg
ICAgICAgbV9wcm9maWxlcy5yZW1vdmUodWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDAyYmNiN2I0MzI4YTc1ZDBhZDJk
NTZmZDQ0N2JmMWY3ZTg5MmFlNWIuLjg0ZmE0NjZiY2Q2ODc0ODNkMDQwOWY2ZjI2YTkyZjgxYTNk
NjhjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4geworY2xh
c3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6
UHJvZmlsZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiwgUGFnZSosIEluc3BlY3RvclN0
YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxlZCgp
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRl
ZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAgICB2
b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiBlcnJvciwgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgaGVhZGVycyk7Ci0gICAgdm9pZCBnZXRQcm9maWxlKEVycm9yU3RyaW5nKiBlcnJv
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1aWQsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBwcm9maWxlT2JqZWN0KTsKLSAgICB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcq
IGVycm9yLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCk7CisgICAgdm9pZCBnZXRQ
cm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGhlYWRl
cnMpOworICAgIHZvaWQgZ2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlw
ZSwgaW50IHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpOworICAg
IHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50
IHVpZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQq
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGQ4ZTRjNjkw
MmJkM2IxZWNjMDg2OTJmMWYyZDgxYWU1N2FmN2YwZGQuLmNhM2IwZTkyNWRjYzU1N2JkYjBiYzFm
YzkwYjNmY2E4ZTRlNTUzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiB1cwogICAgIG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3RhdGU6
OnVzZXJBZ2VudE92ZXJyaWRlLCB1c2VyQWdlbnQpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0
RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBoZWFkZXJzKQogewogICAgIG1fc3RhdGUtPnNldE9iamVjdChSZXNvdXJjZUFnZW50U3Rh
dGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMsIGhlYWRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGY2Zjc1YmYyN2I4
Yjk2NGJkNDMzYzdiODI0N2M5NjUyYmYxNDI1NS4uMTBkZDA2MjJjYmRkNmQ5YWMwOTFkMGJhMjI5
YjU5M2VkYmY5MTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29ya0NvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBjcmVhdGUoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUp
CiAgICAgewpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgc2V0
VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7
Ci0gICAgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KTsKKyAgICB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZvaWQgZ2V0UmVzcG9u
c2VCb2R5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29u
dGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgdm9pZCBjbGVhckNhY2hlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFByZXNlcnZlZExvYWRlcklkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmlu
ZGV4IDc5YTIwMmI4OWRhNzEzYzkyMzk4ZDY4ZDFmMjIwZDM5MzgwODliYTAuLjk3MmE3ZDg4ZGU3
NDA4OTEzY2IwYmVlNGI5M2MzNGU2NzI1YTIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3Mg
V29ya2VyQ29udGV4dDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIElu
c3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
UnVudGltZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6UnVudGltZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZpcnR1YWwg
fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDVjMGFjZDE4YjY0MTllNjE3ZTkz
ZjhmMDlmNzlmMjk2YmM0NmI2NGYuLmQyM2MxZWEyMWRiOGRmNTliZjFkOTAwZmE0MTUwMjNmZThm
Yzc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnJlc3RvcmUoKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzdGFydChFcnJvclN0cmluZyosIGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCit2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxs
U3RhY2tEZXB0aCkKIHsKICAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmlu
ZGV4IDkyYTk3MGNkOTUwNGI2YzBlODMwOTY2MzczZmZmYmFmZWZiOThlNjguLjYwNjE5Y2NkYTIx
MjlhNjdiMDU4MzA4M2YxZjhlNTZiMWM1NjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4sIFNjcmlwdEdDRXZlbnRMaXN0ZW5lciB7CitjbGFzcyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JU
aW1lbGluZUFnZW50PiwgU2NyaXB0R0NFdmVudExpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OlRpbWVsaW5lQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3Rv
ck1lbW9yeUFnZW50KiBtZW1vcnlBZ2VudCkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUo
KTsKIAotICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcqLCBpbnQqIG1heENhbGxTdGFja0RlcHRo
KTsKKyAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tE
ZXB0aCk7CiAgICAgdm9pZCBzdG9wKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRJbmNsdWRl
TWVtb3J5RGV0YWlscyhFcnJvclN0cmluZyosIGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCA3NTExZGExZDY5MmY4
YzljYzQyMDVlNzkzNjE3ZjE5ZjI4ODc2MTlmLi4xYjM4NTk1NzFjYWZjMjNlNGM1NDFkMzQ5YzI2
MGRhMWZlNGYzYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEluc3BlY3Rvcldvcmtl
ckFnZW50OjpkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3Jr
ZXJJZAogICAgICAgICAqZXJyb3IgPSAiV29ya2VyIGlzIGdvbmUiOwogfQogCi12b2lkIEluc3Bl
Y3RvcldvcmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwg
aW50IHdvcmtlcklkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSkKK3ZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVy
cm9yLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdl
KQogewogICAgIFdvcmtlckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCA9IG1faWRUb0NoYW5uZWwu
Z2V0KHdvcmtlcklkKTsKICAgICBpZiAoY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNTk2ZmYxNmFmMzM1ZTI1NmE1ZWQ5
MjkyNjNjMGUxMDEwMTFmNGE0MC4uZDQwNDI3ODk1MGRkODkzNGU1YjMyNGE5Mzc4NjhlYzUyYTkz
NDllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV29ya2VyQ29udGV4dFByb3h5OwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvcldvcmtlckFnZW50PiB7CitjbGFzcyBJ
bnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
V29ya2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OldvcmtlckNv
bW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JX
b3JrZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSop
OwogICAgIH5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRXb3JrZXJJbnNwZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
dmFsdWUpOwogICAgIHZvaWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtl
cklkKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdv
cmtlcklkKTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQg
d29ya2VySWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKTsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKTsKICAgICB2b2lkIHNldEF1dG9jb25uZWN0
VG9Xb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124964</attachid>
            <date>2012-02-01 10:20:06 -0800</date>
            <delta_ts>2012-02-01 12:08:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120201222004.patch</filename>
            <type>text/plain</type>
            <size>42400</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIyZTcxZjE2ZjE5OGU2
MjAxZGIxZDAyMjc5Yjk3NDA4YTc3OGE1My4uMDVhMTVmNmI3YzQyNmM4N2ZmMWNlZTYwYWUxNmNj
MmRlZWYxMWNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMS0zMSAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgVGhl
IHNwZWMgcmVuYW1lZCBhZGRUcmFjaygpIHRvIGFkZFRleHRUcmFjaygpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQppbmRleCBlODk1
ZjA3YWI5YTI5ZjUzNGEzNWRhZjVkZmYxOTZmNjcwM2FiNGIxLi45MmJmMGRlNjk3NmU2ZTQ1YTk4
MTViY2M3NmVjYjVlYmUyNmMzNTdlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weQpAQCAtMTUzLDE1ICsxNTMsOSBAQCBWQUxJREFU
T1JfSUZERUZfTkFNRSA9ICIhQVNTRVJUX0RJU0FCTEVEIgogY2xhc3MgRG9tYWluTmFtZUZpeGVz
OgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfZml4ZWRfZGF0YShjbHMsIGRvbWFpbl9u
YW1lKToKLSAgICAgICAgaWYgZG9tYWluX25hbWUgaW4gY2xzLmFnZW50X3R5cGVfbWFwOgotICAg
ICAgICAgICAgYWdlbnRfbmFtZV9yZXMgPSBjbHMuYWdlbnRfdHlwZV9tYXBbZG9tYWluX25hbWVd
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZ2VudF9uYW1lX3JlcyA9ICJJbnNwZWN0b3Il
c0FnZW50IiAlIGRvbWFpbl9uYW1lCi0KICAgICAgICAgZmllbGRfbmFtZV9yZXMgPSBDYXBpdGFs
aXplci51cHBlcl9jYW1lbF9jYXNlX3RvX2xvd2VyKGRvbWFpbl9uYW1lKSArICJBZ2VudCIKIAog
ICAgICAgICBjbGFzcyBSZXMob2JqZWN0KToKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFtZSA9
IGFnZW50X25hbWVfcmVzCiAgICAgICAgICAgICBza2lwX2pzX2JpbmQgPSBkb21haW5fbmFtZSBp
biBjbHMuc2tpcF9qc19iaW5kX2RvbWFpbnMKICAgICAgICAgICAgIGFnZW50X2ZpZWxkX25hbWUg
PSBmaWVsZF9uYW1lX3JlcwogCkBAIC0xODQsNyArMTc4LDYgQEAgY2xhc3MgRG9tYWluTmFtZUZp
eGVzOgogICAgICAgICByZXR1cm4gUmVzCiAKICAgICBza2lwX2pzX2JpbmRfZG9tYWlucyA9IHNl
dChbIlJ1bnRpbWUiLCAiRE9NRGVidWdnZXIiXSkKLSAgICBhZ2VudF90eXBlX21hcCA9IHsiTmV0
d29yayI6ICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50IiwgIkluc3BlY3RvciI6ICJJbnNwZWN0b3JB
Z2VudCIsIH0KIAogCiBjbGFzcyBDUGFyYW1UeXBlKG9iamVjdCk6CkBAIC0xNzQ5LDggKzE3NDIs
NiBAQCBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIAotJGZvcndhcmREZWNsYXJhdGlvbnMKLQogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcj4gewpAQCAt
MTgwNSw3ICsxNzk2LDYgQEAgJG1ldGhvZE5hbWVzRW51bUNvbnRlbnQKICNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSRpbmNsdWRlcwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTIzOTksOCArMjM4OSw2IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICBiYWNr
ZW5kX3NldHRlcnNfbGlzdCA9IFtdCiAgICAgYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3Qg
PSBbXQogICAgIGJhY2tlbmRfZmllbGRfbGlzdCA9IFtdCi0gICAgYmFja2VuZF9mb3J3YXJkX2xp
c3QgPSBbXQotICAgIGJhY2tlbmRfaW5jbHVkZV9saXN0ID0gW10KICAgICBmcm9udGVuZF9jb25z
dHJ1Y3Rvcl9pbml0X2xpc3QgPSBbXQogICAgIHR5cGVfYnVpbGRlcl9mcmFnbWVudHMgPSBbXQog
ICAgIHR5cGVfYnVpbGRlcl9mb3J3YXJkcyA9IFtdCkBAIC0yNDYxLDEwICsyNDQ5LDExIEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gQ2FwaXRh
bGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQ29tbWFuZEhh
bmRsZXIiCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlz
dC5hcHBlbmQoIiAgICBjbGFzcyAlcyB7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCiAgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAg
ICBwdWJsaWM6XG4iKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJm
YWNlX2xpc3QuYXBwZW5kKCIgICAgICAgIHZpcnR1YWwgfiVzKCkgeyB9XG4iICUgYWdlbnRfaW50
ZXJmYWNlX25hbWUpOwogICAgICAgICAgICAgaWYgImNvbW1hbmRzIiBpbiBqc29uX2RvbWFpbjoK
ICAgICAgICAgICAgICAgICBmb3IganNvbl9jb21tYW5kIGluIGpzb25fZG9tYWluWyJjb21tYW5k
cyJdOgogICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3IucHJvY2Vzc19jb21tYW5kKGpzb25f
Y29tbWFuZCwgZG9tYWluX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpCisgICAgICAgICAgICBHZW5l
cmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIlxuICAgIHByb3RlY3Rl
ZDpcbiIpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlz
dC5hcHBlbmQoIiAgICAgICAgdmlydHVhbCB+JXMoKSB7IH1cbiIgJSBhZ2VudF9pbnRlcmZhY2Vf
bmFtZSkKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0
LmFwcGVuZCgiICAgIH07XG5cbiIpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKQEAg
LTI0NzksOSArMjQ2OCw3IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCwKICAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX3ZpcnR1YWxfc2V0dGVyc19saXN0LAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tl
bmRfc2V0dGVyc19saXN0LAotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmllbGRfbGlz
dCwKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZvcndhcmRfbGlzdCwKLSAgICAgICAg
ICAgIEdlbmVyYXRvci5iYWNrZW5kX2luY2x1ZGVfbGlzdF0KKyAgICAgICAgICAgIEdlbmVyYXRv
ci5iYWNrZW5kX2ZpZWxkX2xpc3RdCiAKICAgICAgICAgZm9yIGpzb25fZG9tYWluIGluIHNvcnRl
ZF9qc29uX2RvbWFpbnM6CiAgICAgICAgICAgICBkb21haW5fbmFtZSA9IGpzb25fZG9tYWluWyJk
b21haW4iXQpAQCAtMjQ5NSwxNCArMjQ4MiwxMSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAg
ICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2Fz
ZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQ29tbWFuZEhhbmRsZXIiCiAKLSAgICAgICAgICAg
IGFnZW50X3R5cGVfbmFtZSA9IGRvbWFpbl9maXhlcy5hZ2VudF90eXBlX25hbWUKICAgICAgICAg
ICAgIGFnZW50X2ZpZWxkX25hbWUgPSBkb21haW5fZml4ZXMuYWdlbnRfZmllbGRfbmFtZQogICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LmFwcGVuZCgi
ICAgICAgICAsIG1fJXMoMCkiICUgYWdlbnRfZmllbGRfbmFtZSkKLSAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX3ZpcnR1YWxfc2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckFnZW50KCVzIC8qICVzICovKiAlcykgPSAwOyIgJSAoYWdlbnRfdHlwZV9uYW1l
LCBhZ2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xpc3QuYXBwZW5kKCIgICAgdm9pZCByZWdpc3RlckFn
ZW50KCVzIC8qICVzICovKiAlcykgeyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFn
ZW50X3R5cGVfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFn
ZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQotICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmllbGRfbGlzdC5hcHBlbmQoIiAgICAlcyAvKiAl
cyAqLyogbV8lczsiICUgKGFnZW50X3R5cGVfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFn
ZW50X2ZpZWxkX25hbWUpKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9s
aXN0LmFwcGVuZCgiY2xhc3MgJXM7IiAlIGFnZW50X3R5cGVfbmFtZSkKLSAgICAgICAgICAgIEdl
bmVyYXRvci5iYWNrZW5kX2luY2x1ZGVfbGlzdC5hcHBlbmQoIiNpbmNsdWRlIFwiJXMuaFwiIiAl
IGFnZW50X3R5cGVfbmFtZSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1YWxf
c2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckFnZW50KCVzKiAl
cykgPSAwOyIgJSAoYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQorICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZvaWQg
cmVnaXN0ZXJBZ2VudCglcyogJXMpIHsgQVNTRVJUKCFtXyVzKTsgbV8lcyA9ICVzOyB9IiAlIChh
Z2VudF9pbnRlcmZhY2VfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSwg
YWdlbnRfZmllbGRfbmFtZSwgYWdlbnRfZmllbGRfbmFtZSkpCisgICAgICAgICAgICBHZW5lcmF0
b3IuYmFja2VuZF9maWVsZF9saXN0LmFwcGVuZCgiICAgICVzKiBtXyVzOyIgJSAoYWdlbnRfaW50
ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQogCiAgICAgICAgICAgICBpZiBkb21haW5f
Z3VhcmQ6CiAgICAgICAgICAgICAgICAgZm9yIGwgaW4gcmV2ZXJzZWQoc29ydGVkX2N5Y2xlX2d1
YXJkYWJsZV9saXN0X2xpc3QpOgpAQCAtMjgwNCwxNSArMjc4OCwxMyBAQCBiYWNrZW5kX2pzX2Zp
bGUgPSBvcGVuKG91dHB1dF9jcHBfZGlybmFtZSArICIvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMi
LCAidyIpCiBiYWNrZW5kX2hfZmlsZS53cml0ZShUZW1wbGF0ZXMuYmFja2VuZF9oLnN1YnN0aXR1
dGUoTm9uZSwKICAgICB2aXJ0dWFsU2V0dGVycz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1
YWxfc2V0dGVyc19saXN0LCAiXG4iKSwKICAgICBhZ2VudEludGVyZmFjZXM9am9pbihHZW5lcmF0
b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdCwgIiIpLAotICAgIG1ldGhvZE5hbWVzRW51
bUNvbnRlbnQ9am9pbihHZW5lcmF0b3IubWV0aG9kX25hbWVfZW51bV9saXN0LCAiXG4iKSwKLSAg
ICBmb3J3YXJkRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9saXN0
LCAiXG4iKSkpCisgICAgbWV0aG9kTmFtZXNFbnVtQ29udGVudD1qb2luKEdlbmVyYXRvci5tZXRo
b2RfbmFtZV9lbnVtX2xpc3QsICJcbiIpKSkKIAogYmFja2VuZF9jcHBfZmlsZS53cml0ZShUZW1w
bGF0ZXMuYmFja2VuZF9jcHAuc3Vic3RpdHV0ZShOb25lLAogICAgIGNvbnN0cnVjdG9ySW5pdD1q
b2luKEdlbmVyYXRvci5iYWNrZW5kX2NvbnN0cnVjdG9yX2luaXRfbGlzdCwgIlxuIiksCiAgICAg
c2V0dGVycz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX3NldHRlcnNfbGlzdCwgIlxuIiksCiAgICAg
ZmllbGREZWNsYXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9maWVsZF9saXN0LCAiXG4i
KSwKICAgICBtZXRob2ROYW1lRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfbWV0
aG9kX25hbWVfZGVjbGFyYXRpb25fbGlzdCwgIlxuIiksCi0gICAgaW5jbHVkZXM9am9pbihHZW5l
cmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3QsICJcbiIpLAogICAgIG1ldGhvZHM9am9pbihHZW5l
cmF0b3IuYmFja2VuZF9tZXRob2RfaW1wbGVtZW50YXRpb25fbGlzdCwgIlxuIiksCiAgICAgbWV0
aG9kRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfbWV0aG9kX2RlY2xhcmF0aW9u
X2xpc3QsICJcbiIpLAogICAgIG1lc3NhZ2VIYW5kbGVycz1qb2luKEdlbmVyYXRvci5tZXRob2Rf
aGFuZGxlcl9saXN0LCAiXG4iKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oCmluZGV4IGY3YzhlNDhjMjQ2NGIyNGYzY2M1ZWEwYjFiY2VlNGM0OTQ3ZmJmZDMuLmEz
OGJlMjFlZTY5MDliOGQzMzU0MWM5MGFiNDc3YmY5YmI3MDAzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIFBhZ2U7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQWdlbnQ+IHsKK2NsYXNzIEluc3Bl
Y3RvckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5zcGVjdG9yQ29tbWFuZEhhbmRsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFnZW50KTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBZ2VudD4gY3JlYXRlKFBhZ2UqIHBhZ2UsIElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgKaW5kZXggYWMwOTI5NzU5OTMyOGY1NDdlZTU3MTM0OGM0Y2RkMDViNmQyNzQ2
ZC4uNDU4ZGIzYmY1YjE4Yjk1OTM3ZDIyZDExODk0ZjMyNmVmNDE1MGQ3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiwgcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpBcHBsaWNhdGlvbkNhY2hlQ29tbWFuZEhh
bmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gY3JlYXRlKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiMWE1OWEzOTRiNDdkYjUzNjMyODgyNTU5
MWE0NmExMzE3YzI0NTBjLi43YzgxMDhkYjJkMWU4OTI1ZWNlMDYxNWQ3NmI3ODc0YmE1ZDRiODBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
QEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZWNhbGNTdHlsZUZv
clBzZXVkb1N0YXRlSWZOZWVkZWQoRWxlbWVudCogZWxlbWVudCwgSW5zcAogICAgICAgICBlbGVt
ZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIGJvb2wqIG5lZWRQc2V1ZG8s
IGJvb2wqIG5lZWRJbmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NS
dWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgaW5oZXJpdGVkRW50cmllcykKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Omdl
dE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29u
c3QgYm9vbCogbmVlZFBzZXVkbywgY29uc3QgYm9vbCogbmVlZEluaGVyaXRlZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBw
c2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKQog
ewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CiAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAppbmRleCA3MGIyZGQ5MGE0Mzc0ZWIwYzgyZDc2NzlmNzg5YWJhMmRjYjli
NWU5Li5mNmU5YjE5MzdjOWI2YWRkMTViNDc1MDQ0ZGE2YTU2OTlmMTJjMDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBTZWxlY3RvclByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFz
cyBJbnNwZWN0b3JDU1NBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
Q1NTQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIHsKK2NsYXNz
IEluc3BlY3RvckNTU0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JD
U1NBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIsIHB1YmxpYyBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q1NTQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0FnZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Q1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlKik7CkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9D
bGFzc2VzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdHlsZSk7CiAgICAgdm9pZCBnZXRJbmxp
bmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhdHRyaWJ1dGVz
KTsKLSAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3Nlcywg
Ym9vbCogaW5jbHVkZVBzZXVkbywgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1
ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAg
ICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29uc3Qg
Ym9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVz
KTsKICAgICB2b2lkIGdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgc3R5bGVTaGVldEluZm9zKTsKICAgICB2b2lkIGdldFN0eWxlU2hlZXQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIHJlc3VsdCk7CiAgICAgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgYm9v
bCBkaXNhYmxlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKICAgICB2b2lkIHNl
dFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiByZXN1bHQpOwotICAgIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGNvbnN0IGludCBjb250
ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgcmVzdWx0KTsKKyAgICB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJl
c3VsdCk7CiAgICAgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KTsKIAogICAgIHZvaWQgc3RhcnRTZWxlY3Rv
clByb2ZpbGVyKEVycm9yU3RyaW5nKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggNzEyM2JlODBjN2ZiNDA4ZWU4ODVkODQ3OGIx
NTE2N2IwZGI1NWFhZC4uZjJiZWJkMjM1MGNkMzY4OTk0ZTA2MTNjYTU3NmJjN2NiMTdmYzEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQu
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVmIFN0cmlu
ZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ29uc29s
ZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpDb25zb2xlQ29tbWFu
ZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNvbnNvbGVBZ2Vu
dCk7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMjhjMGYzYjdk
MDE5OTc5N2YxMTYxOTI1NTBmNGRjYjc3MGNjYTUzMS4uYWIzYjQ5ZDNiODg3MDE2YTUxNjdlM2Mx
MTQwNTU4NTY4YTlkY2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC05NzUsNyArOTc1LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBp
bnQKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoCiAgICAgRXJyb3JTdHJp
bmcqLAogICAgIGludCBub2RlSWQsCi0gICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
aGlnaGxpZ2h0Q29uZmlnKQorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdo
bGlnaHRDb25maWcpCiB7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkg
ewogICAgICAgICBpZiAoc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmln
LmdldCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aAppbmRleCAwMWM0OWRjY2M4MDVmMTI1NzE3ZGYxY2ZhYmVhMjBmN2VlNmNmZGY1Li5kOTE4OWQy
YjJhMDRkMTdiMDgxZGRiNDU1MDIxNjliM2FlYWI3NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgRXZl
bnRMaXN0ZW5lckluZm8gewogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IgZXZlbnRMaXN0
ZW5lclZlY3RvcjsKIH07CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01BZ2VudD4geworY2xhc3MgSW5zcGVjdG9yRE9NQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTUFnZW50PiwgcHVibGlj
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01Db21tYW5kSGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdlbnQpOwogcHVibGljOgogICAgIHN0cnVj
dCBET01MaXN0ZW5lciB7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0
RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcm9vdCk7CiAg
ICAgdm9pZCByZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQpOwogICAg
IHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgc2V0QXR0cmli
dXRlc0FzVGV4dChFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgU3RyaW5nKiBjb25zdCBuYW1lKTsKKyAgICB2b2lkIHNldEF0dHJpYnV0ZXNBc1Rl
eHQoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFN0cmluZyogbmFtZSk7CiAgICAgdm9pZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBp
bnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQpOwogICAgIHZvaWQgc2V0Tm9kZU5hbWUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludCogbmV3SWQpOwpAQCAtMTMy
LDE2ICsxMzIsMTYgQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5nKiBzZWFyY2hJ
ZCwgaW50KiByZXN1bHRDb3VudCk7CiAgICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgs
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKTsKICAgICB2b2lkIGRpc2NhcmRTZWFyY2hSZXN1bHRz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7Ci0gICAgdm9pZCByZXNvbHZl
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0
R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOworICAgIHZvaWQgcmVzb2x2
ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3Vw
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKICAgICB2b2lkIGdldEF0dHJpYnV0
ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiByZXN1
bHQpOwogICAgIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBl
bmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKTsK
ICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwgaW50KiBub2RlSWQpOwogICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CiAgICAgdm9pZCBoaWRl
SGlnaGxpZ2h0KEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3Ry
aW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91
dGxpbmVDb2xvcik7Ci0gICAgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGlnaGxpZ2h0Q29uZmlnKTsKKyAg
ICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnKTsKICAgICB2b2lkIGhpZ2hsaWdo
dEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
dXRsaW5lQ29sb3IpOwotICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
aW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3
Tm9kZUlkKTsKKyAgICB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGludCB0
YXJnZXROb2RlSWQsIGNvbnN0IGludCogYW5jaG9yTm9kZUlkLCBpbnQqIG5ld05vZGVJZCk7CiAK
ICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYzQ5ZjZi
ZWM1ODkzNWFiYWNkNWNkODY3NGI3ODI3YmY0ZTJkNTY3Yy4uYTRhOWIwZDMwNmM1NTgzMWQ2Y2Fi
MmNjMGQzNjU5YjQxNjRmNzFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5v
ZGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50PiwgcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyIHsKK2Ns
YXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9NRGVidWdn
ZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCosIEluc3Bl
Y3RvckFnZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgKaW5kZXggYmQxZDZhNzE5Y2U4YjIxNGMwNTJiOTA5YzM4ZjA4N2Q2
M2RjOTY3OC4uNWZlMDNmMjhhOTk1OWZkNWI2OWJjYzI3NjQxNGU1YWE1NDU4ZmIzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTdG9yYWdlQXJlYTsKIAogdHlwZWRlZiBTdHJpbmcg
RXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiB7CitjbGFzcyBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9N
U3RvcmFnZUNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggYzlj
MmM1M2M0NGQ1ZDM1NDMxMDg1MDA3Yjg5YzI5YjFiMTAyNjgwNi4uMzczZWIyZjUxYTgwYmY1YTc2
YTVjN2UzMDFjYTlkMTU2NTkzODI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JEYXRhYmFzZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEYXRhYmFzZUFnZW50PiwgcHVibGljIEluc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyOjpEYXRhYmFzZUNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZjMyY2VhM2Q2NTFjNmFi
NjM4NjRmZWQ1NmUwMmZlMWQ0Yzk0NmJjMy4uM2YxODkyYzQxZDY3NDk0NWIzODc3M2I2MjAyOWU3
N2IwNGQ0M2IxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBib29sIHBhcnNl
TG9jYXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBsb2NhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRp
dGlvbiwgU3RyaW5nKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBh
Y3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5n
KiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlv
bikKIHsKICAgICBTdHJpbmcgc2NyaXB0SWQ7CiAgICAgaW50IGxpbmVOdW1iZXI7CkBAIC0yODAs
NyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3AKICAgICBtX2JyZWFrcG9pbnRJZFRv
RGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzLnJlbW92ZShkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHNJ
dGVyYXRvcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xv
Y2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGxvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9j
YXRpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgbG9jYXRpb24pCiB7CiAgICAgaWYgKCFtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9p
bnRJZC5pc0VtcHR5KCkpIHsKICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVh
a3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDhlNzJlYmU1
YWEyMjZjYTFkNDkzNTI2MzYyOTJhYmYwNDk3OTljYTUuLmZjOGJjODE5NmI0OGUzOWVlY2E4YzI4
MzVkMWRkYjUxZTNhZmM3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBTY3JpcHRWYWx1
ZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ+LCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
PiwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6RGVidWdnZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBiYWNrdHJhY2VPYmplY3RHcm91cDsKQEAgLTgx
LDEzICs4MSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCiAgICAg
dm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAot
ICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQs
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGxvY2F0aW9ucyk7Ci0gICAgdm9pZCBzZXRCcmVha3Bv
aW50KEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBj
b25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJ
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGFjdHVhbExvY2F0aW9uKTsKKyAgICB2b2lkIHNl
dEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGlu
dCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxDb25kaXRpb24s
IFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMp
OworICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBvcHRpb25hbENvbmRpdGlvbiwg
U3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2Nh
dGlvbik7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBicmVha3BvaW50SWQpOwotICAgIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3Ry
aW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uKTsKKyAgICB2b2lkIGNv
bnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBsb2NhdGlvbik7CiAKLSAgICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJ
c1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7Ci0gICAgdm9pZCBzZXRTY3JpcHRTb3Vy
Y2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5l
d0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOworICAg
IHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJ
ZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKTsK
KyAgICB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2Ny
aXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogcHJldmlldywgUmVm
UHRyPEluc3BlY3RvckFycmF5PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHNjcmlwdElkLCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CiAgICAgdm9pZCBnZXRG
dW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBkZXRhaWxzKTsKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoY29uc3QgU3RyaW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpOwpAQCAtMTAyLDkgKzEwMiw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1
cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sKiB3YXNU
aHJvd24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmgKaW5kZXggMDAzYTljNTU5ZjhlMTY2MDkyYjQ5ZThmYmJhNjU4ZGM3NDY4
NTVhMy4uMmY5NmQ2ZmMyZDdkZTY5OGIyOTljZTEwZWYxMWE3ZDE2YjQxMzc3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuaApA
QCAtNDUsNyArNDUsNyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3BlY3Rv
clN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIAotY2xhc3MgSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JGaWxlU3lz
dGVtQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiwgcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpGaWxlU3lzdGVtQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4gY3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSopOwogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCBlOGM3NzE2MWQ1MWUzZTRiZmJkZTI2Mjk2
M2U4OWQzODEzNDRiN2JmLi41MGFjZmVjMWEzOGZhMjllNGUyNmY1ODFmM2NhMzJlMjIwZDQwOTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiAKIHR5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+IHsK
K2NsYXNzIEluc3BlY3RvckluZGV4ZWREQkFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2Vu
dDxJbnNwZWN0b3JJbmRleGVkREJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIGNsYXNzIEZyb250
ZW5kUHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmgKaW5kZXggYWI1MzA1ZWU2ZTRjNzVlYzViZWNkNWYyMzA3NzYxYTBlMTBiOWRj
Yi4uMzIwYWJkOThlMzQ1YWEyMGUyZWEwZWYxNzFlYTRkNTI5ZjNiMmIyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JNZW1vcnlBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yTWVtb3J5QWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50PiwgcHVibGljIEluc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyOjpNZW1vcnlDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGljOgogICAgIHR5cGVkZWYgVmVj
dG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+ID4gSW5zcGVjdG9yQWdlbnRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4
IGQ2MWMwOTM5ZWMwMThlMGYwMTY0YzljMzY3MTZlMTg2ODc0ZjRmZDguLjMyMWY1ZGU0YTIxMWNm
Nzc4OGZhNTQ3Njc1OTQyOTY4M2YyZmM5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUGFn
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JQYWdlQWdlbnQ+IHsK
K2NsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yUGFnZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpQYWdl
Q29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VB
Z2VudCk7CiBwdWJsaWM6CiAgICAgZW51bSBSZXNvdXJjZVR5cGUgewpAQCAtOTEsMTYgKzkxLDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGFk
ZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHZvaWQgcmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWxv
YWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElnbm9yZUNhY2hlLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk7CisgICAgdm9pZCBy
ZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk7CiAgICAgdm9pZCBuYXZp
Z2F0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGdldENvb2tp
ZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBjb29raWVzLCBXVEY6OlN0
cmluZyogY29va2llc1N0cmluZyk7CiAgICAgdm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluKTsKICAgICB2
b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
Jik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJh
c2U2NEVuY29kZWQpOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVl
cnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7Ci0gICAgdm9p
ZCBzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJv
b2wqIGNvbnN0IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IGlzUmVnZXgsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mKTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOworICAgIHZvaWQgc2Vh
cmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBj
YXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
Jik7CiAgICAgdm9pZCBzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgaHRtbCk7Ci0gICAgdm9pZCBzZXRTY3JlZW5TaXpl
T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQgd2lkdGgsIGNvbnN0IGludCBoZWlnaHQp
OworICAgIHZvaWQgc2V0U2NyZWVuU2l6ZU92ZXJyaWRlKEVycm9yU3RyaW5nKiwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKICAg
ICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3Js
ZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCmluZGV4IGZkZDU2YTg2NWJkYjEwZTdhMmMxNGNjZWNkOTM4NWIyZTBmZTMxYjMu
LjZhZGFhMzQxNDU2YzJjNDM4NjAwOWUzOWJkMWQ4MTU1Mzc1ODgzNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTIx
Nyw4ICsyMTcsOSBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5
cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3Qp
Cit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHR5cGUsIGludCByYXdVaWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBw
cm9maWxlT2JqZWN0KQogeworICAgIHVuc2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihyYXdVaWQpOwogICAgIGlmICh0eXBlID09IENQVVByb2ZpbGVUeXBlKSB7CiAgICAgICAgIFBy
b2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogICAgICAgICBp
ZiAoaXQgIT0gbV9wcm9maWxlcy5lbmQoKSkgewpAQCAtMjQwLDggKzI0MSw5IEBAIHZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgdW5zaWduCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OnJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVk
IHVpZCkKK3ZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHJhd1VpZCkKIHsKKyAgICB1bnNpZ25lZCB1
aWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKICAgICBpZiAodHlwZSA9PSBDUFVQ
cm9maWxlVHlwZSkgewogICAgICAgICBpZiAobV9wcm9maWxlcy5jb250YWlucyh1aWQpKQogICAg
ICAgICAgICAgbV9wcm9maWxlcy5yZW1vdmUodWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDAyYmNiN2I0MzI4YTc1ZDBh
ZDJkNTZmZDQ0N2JmMWY3ZTg5MmFlNWIuLjg0ZmE0NjZiY2Q2ODc0ODNkMDQwOWY2ZjI2YTkyZjgx
YTNkNjhjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
cm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gewor
Y2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6UHJvZmlsZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yQ29uc29sZUFnZW50KiwgUGFnZSosIEluc3BlY3Rv
clN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CkBAIC04MSw5ICs4MSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxl
ZCgpIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRp
YXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAg
ICB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKEVycm9yU3RyaW5nKiBlcnJvciwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgaGVhZGVycyk7Ci0gICAgdm9pZCBnZXRQcm9maWxlKEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1aWQsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBwcm9maWxlT2JqZWN0KTsKLSAgICB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJp
bmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCk7CisgICAgdm9pZCBn
ZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGhl
YWRlcnMpOworICAgIHZvaWQgZ2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
dHlwZSwgaW50IHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpOwor
ICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwg
aW50IHVpZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmQqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGQ4ZTRj
NjkwMmJkM2IxZWNjMDg2OTJmMWYyZDgxYWU1N2FmN2YwZGQuLmNhM2IwZTkyNWRjYzU1N2JkYjBi
YzFmYzkwYjNmY2E4ZTRlNTUzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB1cwogICAgIG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3Rh
dGU6OnVzZXJBZ2VudE92ZXJyaWRlLCB1c2VyQWdlbnQpOwogfQogCi12b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBoZWFkZXJzKQogewogICAgIG1fc3RhdGUtPnNldE9iamVjdChSZXNvdXJjZUFnZW50
U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMsIGhlYWRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGY2Zjc1YmYy
N2I4Yjk2NGJkNDMzYzdiODI0N2M5NjUyYmYxNDI1NS4uMTBkZDA2MjJjYmRkNmQ5YWMwOTFkMGJh
MjI5YjU5M2VkYmY5MTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3Mg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29ya0NvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogc3Rh
dGUpCiAgICAgewpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQg
c2V0VXNlckFnZW50T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCk7Ci0gICAgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KTsKKyAgICB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZvaWQgZ2V0UmVz
cG9uc2VCb2R5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyog
Y29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgdm9pZCBjbGVhckNhY2hlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFByZXNlcnZlZExvYWRlcklkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
CmluZGV4IDc5YTIwMmI4OWRhNzEzYzkyMzk4ZDY4ZDFmMjIwZDM5MzgwODliYTAuLmUwNzYwMGJh
MzUyZGVlOWJiYWNjYTRiN2VlMDRmYTEyOWQwYzM4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgV29ya2VyQ29udGV4dDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNz
IEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yUnVudGltZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UnVudGltZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGljOgogICAgIHZpcnR1
YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwpAQCAtNTksMTggKzU5LDE4IEBAIHB1YmxpYzoK
ICAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KICAgICB2b2lkIGV2YWx1YXRlKEVycm9yU3Ry
aW5nKiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsCi0gICAgICAgICAg
ICAgICAgICBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVBUEksCi0gICAgICAg
ICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNlcHRpb25zLAotICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBjb25zdCBmcmFtZUlkLAotICAgICAgICAgICAg
ICAgICAgY29uc3QgYm9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsCisgICAgICAgICAgICAgICAgICBjb25zdCBib29s
KiBpbmNsdWRlQ29tbWFuZExpbmVBUEksCisgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBk
b05vdFBhdXNlT25FeGNlcHRpb25zLAorICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBm
cmFtZUlkLAorICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQsCiAgICAgICAg
ICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwogICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJy
b3JTdHJpbmcqLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RJ
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGNvbnN0
IG9wdGlvbmFsQXJndW1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCog
Y29uc3QgcmV0dXJuQnlWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4qIG9wdGlvbmFsQXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sKiB3YXNUaHJvd24pOwogICAgIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDVjMGFjZDE4YjY0MTllNjE3ZTkz
ZjhmMDlmNzlmMjk2YmM0NmI2NGYuLmQyM2MxZWEyMWRiOGRmNTliZjFkOTAwZmE0MTUwMjNmZThm
Yzc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQ6OnJlc3RvcmUoKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzdGFydChFcnJvclN0cmluZyosIGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCit2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxs
U3RhY2tEZXB0aCkKIHsKICAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmlu
ZGV4IDkyYTk3MGNkOTUwNGI2YzBlODMwOTY2MzczZmZmYmFmZWZiOThlNjguLjYwNjE5Y2NkYTIx
MjlhNjdiMDU4MzA4M2YxZjhlNTZiMWM1NjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yVGltZWxpbmVBZ2VudD4sIFNjcmlwdEdDRXZlbnRMaXN0ZW5lciB7CitjbGFzcyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JU
aW1lbGluZUFnZW50PiwgU2NyaXB0R0NFdmVudExpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OlRpbWVsaW5lQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3Rv
ck1lbW9yeUFnZW50KiBtZW1vcnlBZ2VudCkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUo
KTsKIAotICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcqLCBpbnQqIG1heENhbGxTdGFja0RlcHRo
KTsKKyAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tE
ZXB0aCk7CiAgICAgdm9pZCBzdG9wKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBzZXRJbmNsdWRl
TWVtb3J5RGV0YWlscyhFcnJvclN0cmluZyosIGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCA3NTExZGExZDY5MmY4
YzljYzQyMDVlNzkzNjE3ZjE5ZjI4ODc2MTlmLi4xYjM4NTk1NzFjYWZjMjNlNGM1NDFkMzQ5YzI2
MGRhMWZlNGYzYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEluc3BlY3Rvcldvcmtl
ckFnZW50OjpkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3Jr
ZXJJZAogICAgICAgICAqZXJyb3IgPSAiV29ya2VyIGlzIGdvbmUiOwogfQogCi12b2lkIEluc3Bl
Y3RvcldvcmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwg
aW50IHdvcmtlcklkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSkKK3ZvaWQg
SW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVy
cm9yLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdl
KQogewogICAgIFdvcmtlckZyb250ZW5kQ2hhbm5lbCogY2hhbm5lbCA9IG1faWRUb0NoYW5uZWwu
Z2V0KHdvcmtlcklkKTsKICAgICBpZiAoY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNTk2ZmYxNmFmMzM1ZTI1NmE1ZWQ5
MjkyNjNjMGUxMDEwMTFmNGE0MC4uZDQwNDI3ODk1MGRkODkzNGU1YjMyNGE5Mzc4NjhlYzUyYTkz
NDllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgV29ya2VyQ29udGV4dFByb3h5OwogCiB0eXBl
ZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yV29ya2VyQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvcldvcmtlckFnZW50PiB7CitjbGFzcyBJ
bnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
V29ya2VyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OldvcmtlckNv
bW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JX
b3JrZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSop
OwogICAgIH5JbnNwZWN0b3JXb3JrZXJBZ2VudCgpOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRXb3JrZXJJbnNwZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
dmFsdWUpOwogICAgIHZvaWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtl
cklkKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdv
cmtlcklkKTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQg
d29ya2VySWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKTsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKTsKICAgICB2b2lkIHNldEF1dG9jb25uZWN0
VG9Xb3JrZXJzKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124984</attachid>
            <date>2012-02-01 12:09:33 -0800</date>
            <delta_ts>2012-02-05 14:08:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120202000927.patch</filename>
            <type>text/plain</type>
            <size>42768</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM3ZmUyOGU3NDY0ZWZi
ODc0NzMzZDhjZGNlMDJiNzhiZjlhZTkxYi4uMDUyMGQ1OGRlYWRmOGQxNmY3ZDgyZWNhZjUzNDM0
MjAxMjQ1ZGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMi0wMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gZWRpdGluZy9pbnNlcnRpbmcvNDk2MDEyMC0yLmh0bWwgZmxha3kgY3Jh
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucHkKaW5kZXggMDQzNThlZGNiYjUzMWI4NGQ2YzE5OTNkNTlmMmQxM2Q1M2MyMTMzMy4uNzM3
ZDZmYmU2MWFmYTI2NjM0ODQ2Y2I0M2I3NDhmYjU2YjFkYTA1YiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTE1MywxNSAr
MTUzLDkgQEAgVkFMSURBVE9SX0lGREVGX05BTUUgPSAiIUFTU0VSVF9ESVNBQkxFRCIKIGNsYXNz
IERvbWFpbk5hbWVGaXhlczoKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2V0X2ZpeGVkX2Rh
dGEoY2xzLCBkb21haW5fbmFtZSk6Ci0gICAgICAgIGlmIGRvbWFpbl9uYW1lIGluIGNscy5hZ2Vu
dF90eXBlX21hcDoKLSAgICAgICAgICAgIGFnZW50X25hbWVfcmVzID0gY2xzLmFnZW50X3R5cGVf
bWFwW2RvbWFpbl9uYW1lXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYWdlbnRfbmFtZV9y
ZXMgPSAiSW5zcGVjdG9yJXNBZ2VudCIgJSBkb21haW5fbmFtZQotCiAgICAgICAgIGZpZWxkX25h
bWVfcmVzID0gQ2FwaXRhbGl6ZXIudXBwZXJfY2FtZWxfY2FzZV90b19sb3dlcihkb21haW5fbmFt
ZSkgKyAiQWdlbnQiCiAKICAgICAgICAgY2xhc3MgUmVzKG9iamVjdCk6Ci0gICAgICAgICAgICBh
Z2VudF90eXBlX25hbWUgPSBhZ2VudF9uYW1lX3JlcwogICAgICAgICAgICAgc2tpcF9qc19iaW5k
ID0gZG9tYWluX25hbWUgaW4gY2xzLnNraXBfanNfYmluZF9kb21haW5zCiAgICAgICAgICAgICBh
Z2VudF9maWVsZF9uYW1lID0gZmllbGRfbmFtZV9yZXMKIApAQCAtMTg0LDcgKzE3OCw2IEBAIGNs
YXNzIERvbWFpbk5hbWVGaXhlczoKICAgICAgICAgcmV0dXJuIFJlcwogCiAgICAgc2tpcF9qc19i
aW5kX2RvbWFpbnMgPSBzZXQoWyJSdW50aW1lIiwgIkRPTURlYnVnZ2VyIl0pCi0gICAgYWdlbnRf
dHlwZV9tYXAgPSB7Ik5ldHdvcmsiOiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCIsICJJbnNwZWN0
b3IiOiAiSW5zcGVjdG9yQWdlbnQiLCB9CiAKIAogY2xhc3MgQ1BhcmFtVHlwZShvYmplY3QpOgpA
QCAtMTY3NSw4ICsxNjY4LDYgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVj
dG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLSRmb3J3YXJkRGVj
bGFyYXRpb25zCi0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IHsKQEAgLTE3MzEsNyArMTcyMiw2IEBAICRtZXRob2ROYW1lc0VudW1Db250ZW50
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0kaW5jbHVkZXMK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMzk3LDggKzIzODcsNiBAQCBjbGFzcyBHZW5l
cmF0b3I6CiAgICAgYmFja2VuZF9zZXR0ZXJzX2xpc3QgPSBbXQogICAgIGJhY2tlbmRfY29uc3Ry
dWN0b3JfaW5pdF9saXN0ID0gW10KICAgICBiYWNrZW5kX2ZpZWxkX2xpc3QgPSBbXQotICAgIGJh
Y2tlbmRfZm9yd2FyZF9saXN0ID0gW10KLSAgICBiYWNrZW5kX2luY2x1ZGVfbGlzdCA9IFtdCiAg
ICAgZnJvbnRlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0ID0gW10KICAgICB0eXBlX2J1aWxkZXJf
ZnJhZ21lbnRzID0gW10KICAgICB0eXBlX2J1aWxkZXJfZm9yd2FyZHMgPSBbXQpAQCAtMjQ1OSwx
MCArMjQ0NywxMSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZh
Y2VfbmFtZSA9IENhcGl0YWxpemVyLmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25h
bWUpICsgIkNvbW1hbmRIYW5kbGVyIgogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdl
bnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgY2xhc3MgJXMge1xuIiAlIGFnZW50X2ludGVy
ZmFjZV9uYW1lKQogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNl
X2xpc3QuYXBwZW5kKCIgICAgcHVibGljOlxuIikKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNr
ZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgICAgICB2aXJ0dWFsIH4lcygpIHsg
fVxuIiAlIGFnZW50X2ludGVyZmFjZV9uYW1lKTsKICAgICAgICAgICAgIGlmICJjb21tYW5kcyIg
aW4ganNvbl9kb21haW46CiAgICAgICAgICAgICAgICAgZm9yIGpzb25fY29tbWFuZCBpbiBqc29u
X2RvbWFpblsiY29tbWFuZHMiXToKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLnByb2Nl
c3NfY29tbWFuZChqc29uX2NvbW1hbmQsIGRvbWFpbl9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKQor
ICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5k
KCJcbiAgICBwcm90ZWN0ZWQ6XG4iKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdl
bnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAgICAgIHZpcnR1YWwgfiVzKCkgeyB9XG4iICUg
YWdlbnRfaW50ZXJmYWNlX25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2Vu
dF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICB9O1xuXG4iKQogCiAgICAgICAgICAgICBpZiBk
b21haW5fZ3VhcmQ6CkBAIC0yNDc3LDkgKzI0NjYsNyBAQCBjbGFzcyBHZW5lcmF0b3I6CiAgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QsCiAgICAgICAg
ICAgICBHZW5lcmF0b3IuYmFja2VuZF92aXJ0dWFsX3NldHRlcnNfbGlzdCwKICAgICAgICAgICAg
IEdlbmVyYXRvci5iYWNrZW5kX3NldHRlcnNfbGlzdCwKLSAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2ZpZWxkX2xpc3QsCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJk
X2xpc3QsCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3RdCisgICAg
ICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9maWVsZF9saXN0XQogCiAgICAgICAgIGZvciBqc29u
X2RvbWFpbiBpbiBzb3J0ZWRfanNvbl9kb21haW5zOgogICAgICAgICAgICAgZG9tYWluX25hbWUg
PSBqc29uX2RvbWFpblsiZG9tYWluIl0KQEAgLTI0OTMsMTQgKzI0ODAsMTEgQEAgY2xhc3MgR2Vu
ZXJhdG9yOgogCiAgICAgICAgICAgICBhZ2VudF9pbnRlcmZhY2VfbmFtZSA9IENhcGl0YWxpemVy
Lmxvd2VyX2NhbWVsX2Nhc2VfdG9fdXBwZXIoZG9tYWluX25hbWUpICsgIkNvbW1hbmRIYW5kbGVy
IgogCi0gICAgICAgICAgICBhZ2VudF90eXBlX25hbWUgPSBkb21haW5fZml4ZXMuYWdlbnRfdHlw
ZV9uYW1lCiAgICAgICAgICAgICBhZ2VudF9maWVsZF9uYW1lID0gZG9tYWluX2ZpeGVzLmFnZW50
X2ZpZWxkX25hbWUKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2NvbnN0cnVjdG9yX2lu
aXRfbGlzdC5hcHBlbmQoIiAgICAgICAgLCBtXyVzKDApIiAlIGFnZW50X2ZpZWxkX25hbWUpCi0g
ICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF92aXJ0dWFsX3NldHRlcnNfbGlzdC5hcHBlbmQo
IiAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBZ2VudCglcyAvKiAlcyAqLyogJXMpID0gMDsiICUg
KGFnZW50X3R5cGVfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUp
KQotICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LmFwcGVuZCgiICAg
IHZvaWQgcmVnaXN0ZXJBZ2VudCglcyAvKiAlcyAqLyogJXMpIHsgQVNTRVJUKCFtXyVzKTsgbV8l
cyA9ICVzOyB9IiAlIChhZ2VudF90eXBlX25hbWUsIGFnZW50X2ludGVyZmFjZV9uYW1lLCBhZ2Vu
dF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9m
aWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xpc3QuYXBw
ZW5kKCIgICAgJXMgLyogJXMgKi8qIG1fJXM7IiAlIChhZ2VudF90eXBlX25hbWUsIGFnZW50X2lu
dGVyZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5i
YWNrZW5kX2ZvcndhcmRfbGlzdC5hcHBlbmQoImNsYXNzICVzOyIgJSBhZ2VudF90eXBlX25hbWUp
Ci0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9pbmNsdWRlX2xpc3QuYXBwZW5kKCIjaW5j
bHVkZSBcIiVzLmhcIiIgJSBhZ2VudF90eXBlX25hbWUpCisgICAgICAgICAgICBHZW5lcmF0b3Iu
YmFja2VuZF92aXJ0dWFsX3NldHRlcnNfbGlzdC5hcHBlbmQoIiAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJBZ2VudCglcyogJXMpID0gMDsiICUgKGFnZW50X2ludGVyZmFjZV9uYW1lLCBhZ2VudF9m
aWVsZF9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3NldHRlcnNfbGlzdC5h
cHBlbmQoIiAgICB2b2lkIHJlZ2lzdGVyQWdlbnQoJXMqICVzKSB7IEFTU0VSVCghbV8lcyk7IG1f
JXMgPSAlczsgfSIgJSAoYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFn
ZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQorICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmllbGRfbGlzdC5hcHBlbmQoIiAgICAlcyogbV8l
czsiICUgKGFnZW50X2ludGVyZmFjZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKIAogICAgICAg
ICAgICAgaWYgZG9tYWluX2d1YXJkOgogICAgICAgICAgICAgICAgIGZvciBsIGluIHJldmVyc2Vk
KHNvcnRlZF9jeWNsZV9ndWFyZGFibGVfbGlzdF9saXN0KToKQEAgLTI4MDIsMTUgKzI3ODYsMTMg
QEAgYmFja2VuZF9qc19maWxlID0gb3BlbihvdXRwdXRfY3BwX2Rpcm5hbWUgKyAiL0luc3BlY3Rv
ckJhY2tlbmRTdHViLmpzIiwgInciKQogYmFja2VuZF9oX2ZpbGUud3JpdGUoVGVtcGxhdGVzLmJh
Y2tlbmRfaC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgdmlydHVhbFNldHRlcnM9am9pbihHZW5lcmF0
b3IuYmFja2VuZF92aXJ0dWFsX3NldHRlcnNfbGlzdCwgIlxuIiksCiAgICAgYWdlbnRJbnRlcmZh
Y2VzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QsICIiKSwKLSAg
ICBtZXRob2ROYW1lc0VudW1Db250ZW50PWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9uYW1lX2VudW1f
bGlzdCwgIlxuIiksCi0gICAgZm9yd2FyZERlY2xhcmF0aW9ucz1qb2luKEdlbmVyYXRvci5iYWNr
ZW5kX2ZvcndhcmRfbGlzdCwgIlxuIikpKQorICAgIG1ldGhvZE5hbWVzRW51bUNvbnRlbnQ9am9p
bihHZW5lcmF0b3IubWV0aG9kX25hbWVfZW51bV9saXN0LCAiXG4iKSkpCiAKIGJhY2tlbmRfY3Bw
X2ZpbGUud3JpdGUoVGVtcGxhdGVzLmJhY2tlbmRfY3BwLnN1YnN0aXR1dGUoTm9uZSwKICAgICBj
b25zdHJ1Y3RvckluaXQ9am9pbihHZW5lcmF0b3IuYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xp
c3QsICJcbiIpLAogICAgIHNldHRlcnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9zZXR0ZXJzX2xp
c3QsICJcbiIpLAogICAgIGZpZWxkRGVjbGFyYXRpb25zPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRf
ZmllbGRfbGlzdCwgIlxuIiksCiAgICAgbWV0aG9kTmFtZURlY2xhcmF0aW9ucz1qb2luKEdlbmVy
YXRvci5iYWNrZW5kX21ldGhvZF9uYW1lX2RlY2xhcmF0aW9uX2xpc3QsICJcbiIpLAotICAgIGlu
Y2x1ZGVzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfaW5jbHVkZV9saXN0LCAiXG4iKSwKICAgICBt
ZXRob2RzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfbWV0aG9kX2ltcGxlbWVudGF0aW9uX2xpc3Qs
ICJcbiIpLAogICAgIG1ldGhvZERlY2xhcmF0aW9ucz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX21l
dGhvZF9kZWNsYXJhdGlvbl9saXN0LCAiXG4iKSwKICAgICBtZXNzYWdlSGFuZGxlcnM9am9pbihH
ZW5lcmF0b3IubWV0aG9kX2hhbmRsZXJfbGlzdCwgIlxuIikpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCBmN2M4ZTQ4YzI0NjRiMjRmM2NjNWVhMGIxYmNl
ZTRjNDk0N2ZiZmQzLi5hMzhiZTIxZWU2OTA5YjhkMzM1NDFjOTBhYjQ3N2JmOWJiNzAwMzlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtNTIsNyArNTIs
NyBAQCBjbGFzcyBQYWdlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3Mg
SW5zcGVjdG9yQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFnZW50
PiB7CitjbGFzcyBJbnNwZWN0b3JBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5z
cGVjdG9yQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Okluc3BlY3Rv
ckNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JBZ2Vu
dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQWdlbnQ+IGNyZWF0
ZShQYWdlKiBwYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdl
ciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3Rh
dGUqIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IGFjMDkyOTc1OTkzMjhmNTQ3ZWU1NzEz
NDhjNGNkZDA1YjZkMjc0NmQuLjQ1OGRiM2JmNWIxOGI5NTkzN2QyMmQxMTg5NGYzMjZlZjQxNTBk
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6QXBwbGljYXRp
b25DYWNoZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+
IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JTdGF0ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggYjFhNTlhMzk0
YjQ3ZGI1MzYzMjg4MjU1OTFhNDZhMTMxN2MyNDUwYy4uN2M4MTA4ZGIyZDFlODkyNWVjZTA2MTVk
NzZiNzg3NGJhNWQ0YjgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6cmVjYWxjU3R5bGVGb3JQc2V1ZG9TdGF0ZUlmTmVlZGVkKEVsZW1lbnQqIGVsZW1lbnQsIElu
c3AKICAgICAgICAgZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yQ2hhbmdl
ZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBi
b29sKiBuZWVkUHNldWRvLCBib29sKiBuZWVkSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVs
ZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpCit2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBz
ZXVkb0NsYXNzZXMsIGNvbnN0IGJvb2wqIG5lZWRQc2V1ZG8sIGNvbnN0IGJvb2wqIG5lZWRJbmhl
cml0ZWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgcHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaW5o
ZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVy
cm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNzBiMmRkOTBhNDM3NGViMGM4MmQ3
Njc5Zjc4OWFiYTJkY2I5YjVlOS4uZjZlOWIxOTM3YzliNmFkZDE1YjQ3NTA0NGRhNmE1Njk5ZjEy
YzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgU2VsZWN0b3JQcm9maWxlOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKIAotY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFz
ZUFnZW50PEluc3BlY3RvckNTU0FnZW50PiwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01M
aXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yQ1NTQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxp
c3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNTU0NvbW1hbmRIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JDU1NBZ2VudCk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSopOwpA
QCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JO
b2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5
PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgc3R5bGUpOwog
ICAgIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiYgYXR0cmlidXRlcyk7Ci0gICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNl
ZFBzZXVkb0NsYXNzZXMsIGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGJvb2wqIGluY2x1ZGVJbmhlcml0
ZWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgcHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaW5oZXJp
dGVkRW50cmllcyk7CisgICAgdm9pZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVk
b0NsYXNzZXMsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJ
bmhlcml0ZWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgcHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYg
aW5oZXJpdGVkRW50cmllcyk7CiAgICAgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0eWxlU2hlZXRJbmZvcyk7CiAgICAgdm9pZCBn
ZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U3R5bGVTaGVldFRl
eHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgU3RyaW5nKiByZXN1
bHQpOwpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcm9wZXJ0eVRleHQo
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50
IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHBy
b3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3Vs
dCk7CiAgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKLSAgICB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcq
LCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5n
KiwgaW50IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHJlc3VsdCk7CiAKICAgICB2
b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IDcxMjNiZTgwYzdm
YjQwOGVlODg1ZDg0NzhiMTUxNjdiMGRiNTVhYWQuLmYyYmViZDIzNTBjZDM2ODk5NGUwNjEzY2E1
NzZiYzdjYjE3ZmMxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgU2NyaXB0UHJvZmlsZTsK
IAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckNvbnNvbGVB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ29uc29sZUFnZW50PiB7
CitjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50
PEluc3BlY3RvckNvbnNvbGVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
cjo6Q29uc29sZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNw
ZWN0b3JDb25zb2xlQWdlbnQpOwogcHVibGljOgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CmluZGV4IDI4YzBmM2I3ZDAxOTk3OTdmMTE2MTkyNTUwZjRkY2I3NzBjY2E1MzEuLmFiM2I0OWQz
Yjg4NzAxNmE1MTY3ZTNjMTE0MDU1ODU2OGE5ZGNlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtOTc1LDcgKzk3NSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50CiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2Rl
KAogICAgIEVycm9yU3RyaW5nKiwKICAgICBpbnQgbm9kZUlkLAotICAgIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdodENvbmZpZykKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnKQogewogICAgIGlmIChOb2RlKiBub2RlID0gbm9k
ZUZvcklkKG5vZGVJZCkpIHsKICAgICAgICAgaWYgKHNldEhpZ2hsaWdodERhdGFGcm9tQ29uZmln
KGhpZ2hsaWdodENvbmZpZy5nZXQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKaW5kZXggMDFjNDlkY2NjODA1ZjEyNTcxN2RmMWNmYWJlYTIwZjdl
ZTZjZmRmNS4uZDkxODlkMmIyYTA0ZDE3YjA4MWRkYjQ1NTAyMTY5YjNhZWFiNzRiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTg5LDcgKzg5
LDcgQEAgc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvIHsKICAgICBjb25zdCBFdmVudExpc3RlbmVy
VmVjdG9yIGV2ZW50TGlzdGVuZXJWZWN0b3I7CiB9OwogCi1jbGFzcyBJbnNwZWN0b3JET01BZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NQWdlbnQ+IHsKK2NsYXNz
IEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JE
T01BZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RE9NQ29tbWFuZEhh
bmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mIHJvb3QpOwogICAgIHZvaWQgcmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkKTsKICAgICB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50
IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAg
ICB2b2lkIHNldEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyogY29uc3QgbmFtZSk7CisgICAgdm9pZCBz
ZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpOwogICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRl
KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKICAgICB2
b2lkIHJlbW92ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKICAgICB2b2lkIHNldE5v
ZGVOYW1lKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQq
IG5ld0lkKTsKQEAgLTEzMiwxNiArMTMyLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1T
ZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnks
IFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpOwogICAgIHZvaWQgZ2V0U2VhcmNo
UmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5k
ZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7CiAgICAgdm9pZCBkaXNj
YXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpOwot
ICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsK
KyAgICB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3Ry
aW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CiAgICAg
dm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiYgcmVzdWx0KTsKICAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJv
clN0cmluZyosIGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGhp
Z2hsaWdodENvbmZpZyk7CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKTsKICAgICB2b2lkIHB1c2hOb2RlQnlQYXRo
VG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF0aCwgaW50KiBub2RlSWQp
OwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwogICAgIHZvaWQgaGlnaGxp
Z2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpOwotICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hs
aWdodENvbmZpZyk7CisgICAgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZyk7CiAg
ICAgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKLSAgICB2b2lkIG1vdmVUbyhFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9y
Tm9kZUlkLCBpbnQqIG5ld05vZGVJZCk7CisgICAgdm9pZCBtb3ZlVG8oRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25zdCBpbnQqIGFuY2hvck5vZGVJZCwgaW50
KiBuZXdOb2RlSWQpOwogCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IGM0OWY2YmVjNTg5MzVhYmFjZDVjZDg2NzRiNzgyN2JmNGUyZDU2N2MuLmE0YTli
MGQzMDZjNTU4MzFkNmNhYjJjYzBkMzY1OWI0MTY0ZjcxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTQsNyAr
NTQsNyBAQCBjbGFzcyBOb2RlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xh
c3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpMaXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiwgcHVibGljIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyLCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXI6OkRPTURlYnVnZ2VyQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IGJkMWQ2YTcxOWNlOGIyMTRj
MDUyYjkwOWMzOGYwODdkNjNkYzk2NzguLjVmZTAzZjI4YTk5NTlmZDViNjliY2MyNzY0MTRlNWFh
NTQ1OGZiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWE7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dD4geworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkRPTVN0b3JhZ2VDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudC5oCmluZGV4IGM5YzJjNTNjNDRkNWQzNTQzMTA4NTAwN2I4OWMyOWIxYjEwMjY4MDYuLjM3
M2ViMmY1MWE4MGJmNWE3NmE1YzdlMzAxY2E5ZDE1NjU5MzgyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtNDUsNyArNDUs
NyBAQCBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKIAotY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGF0YWJhc2VDb21tYW5kSGFu
ZGxlciB7CiBwdWJsaWM6CiAgICAgY2xhc3MgRnJvbnRlbmRQcm92aWRlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4
IGYzMmNlYTNkNjUxYzZhYjYzODY0ZmVkNTZlMDJmZTFkNGM5NDZiYzMuLjNmMTg5MmM0MWQ2NzQ5
NDViMzg3NzNiNjIwMjllNzdiMDRkNDNiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBz
dGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gbG9jYQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb24sIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxD
b25kaXRpb24sIFN0cmluZyogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgYWN0dWFsTG9jYXRpb24pCiB7CiAgICAgU3RyaW5nIHNjcmlwdElkOwogICAgIGludCBsaW5l
TnVtYmVyOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwCiAgICAg
bV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5yZW1vdmUoZGVidWdTZXJ2
ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKQogewogICAgIGlmICghbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SWQuaXNFbXB0eSgpKSB7CiAgICAgICAgIHNjcmlwdERlYnVnU2Vy
dmVyKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aAppbmRleCA4ZTcyZWJlNWFhMjI2Y2ExZDQ5MzUyNjM2MjkyYWJmMDQ5Nzk5Y2E1Li5mYzhiYzgx
OTZiNDhlMzllZWNhOGMyODM1ZDFkZGI1MWUzYWZjN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTU4LDcgKzU4LDcgQEAg
Y2xhc3MgU2NyaXB0VmFsdWU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFz
cyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50PiwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVuZXIgeworY2xhc3Mg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yRGVidWdnZXJBZ2VudD4sIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyLCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkRlYnVnZ2VyQ29tbWFuZEhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogYmFja3RyYWNlT2Jq
ZWN0R3JvdXA7CkBAIC04MSwxMyArODEsMTMgQEAgcHVibGljOgogICAgIC8vIFBhcnQgb2YgdGhl
IHByb3RvY29sLgogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBi
b29sIGFjdGl2ZSk7CiAKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyos
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBT
dHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxD
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmlu
ZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBsb2NhdGlvbnMpOwotICAg
IHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBsb2NhdGlvbiwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbENvbmRpdGlvbiwgU3Ry
aW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlv
bik7CisgICAgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVS
TFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiYgbG9jYXRpb25zKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxDb25kaXRpb24sIFN0cmluZyogYnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYgYWN0dWFsTG9jYXRpb24pOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKLSAgICB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlv
bik7CisgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pOwogCi0gICAgdm9pZCBzZWFyY2hJbkNvbnRl
bnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1
ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYpOwotICAgIHZv
aWQgc2V0U2NyaXB0U291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwg
Y29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBjb25zdCBib29sKiBjb25zdCBwcmV2aWV3LCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgcmVzdWx0KTsKKyAgICB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+Jik7CisgICAgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJv
b2wqIHByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwogICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2Up
OwogICAgIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZGV0YWlscyk7CiAgICAgdm9p
ZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtSZWFzb24s
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKQEAgLTEwMiw5ICsxMDIsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29t
bWFuZExpbmVBUEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGNv
bnN0IHJldHVybkJ5VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJv
b2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCogd2FzVGhyb3duKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oCmluZGV4IDAwM2E5YzU1OWY4ZTE2NjA5MmI0
OWU4ZmJiYTY1OGRjNzQ2ODU1YTMuLjJmOTZkNmZjMmQ3ZGU2OThiMjk5Y2UxMGVmMTFhN2QxNmI0
MTM3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxl
U3lzdGVtQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7
CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKLWNs
YXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4s
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5k
bGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVt
QWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKaW5kZXggZThjNzcxNjFk
NTFlM2U0YmZiZGUyNjI5NjNlODlkMzgxMzQ0YjdiZi4uNTBhY2ZlYzFhMzhmYTI5ZTRlMjZmNTgx
ZjNjYTMyZTIyMGQ0MDk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW5zcGVjdG9y
UGFnZUFnZW50OwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ+LCBwdWJsaWMgSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWREQkNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IGFiNTMwNWVlNmU0Yzc1ZWM1YmVjZDVm
MjMwNzc2MWEwZTEwYjlkY2IuLjMyMGFiZDk4ZTM0NWFhMjBlMmVhMGVmMTcxZWE0ZDUyOWYzYjJi
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JC
YXNlQWdlbnQ8SW5zcGVjdG9yTWVtb3J5QWdlbnQ+IHsKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUFn
ZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TWVtb3J5Q29tbWFuZEhhbmRsZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rvck1lbW9yeUFnZW50KTsKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPiA+
IEluc3BlY3RvckFnZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAppbmRleCBkNjFjMDkzOWVjMDE4ZTBmMDE2NGM5YzM2NzE2ZTE4Njg3NGY0ZmQ4
Li4zMjFmNWRlNGEyMTFjZjc3ODhmYTU0NzY3NTk0Mjk2ODNmMmZjOTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC02MCw3ICs2MCw3IEBA
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNs
YXNzIEluc3BlY3RvclBhZ2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yUGFnZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQmFzZUFnZW50PEluc3BlY3RvclBhZ2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6UGFnZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShJbnNwZWN0b3JQYWdlQWdlbnQpOwogcHVibGljOgogICAgIGVudW0gUmVzb3VyY2VUeXBlIHsK
QEAgLTkxLDE2ICs5MSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5n
Kik7CiAgICAgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KTsKICAgICB2b2lkIHJlbW92ZVNjcmlw
dFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
OwotICAgIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9u
YWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxv
YWQpOworICAgIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogb3B0aW9uYWxJ
Z25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQp
OwogICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYg
Y29va2llcywgV1RGOjpTdHJpbmcqIGNvb2tpZXNTdHJpbmcpOwogICAgIHZvaWQgZGVsZXRlQ29v
a2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcm
IGRvbWFpbik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VDb250ZW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgU3RyaW5nKiBj
b250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKLSAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2Uo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiYpOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7CisgICAgdm9pZCBzZWFyY2hJblJl
c291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
KTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYpOwogICAgIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpOwotICAgIHZv
aWQgc2V0U2NyZWVuU2l6ZU92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3QgaW50IHdpZHRoLCBj
b25zdCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNldFNjcmVlblNpemVPdmVycmlkZShFcnJvclN0
cmluZyosIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24gQVBJCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUq
LCBET01XcmFwcGVyV29ybGQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBmZGQ1NmE4NjViZGIxMGU3YTJjMTRjY2Vj
ZDkzODViMmUwZmUzMWIzLi42YWRhYTM0MTQ1NmMyYzQzODYwMDllMzliZDFkODE1NTM3NTg4MzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVy
QWdlbnQuY3BwCkBAIC0yMTcsOCArMjE3LDkgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UK
IAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1aWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBwcm9maWxlT2JqZWN0KQordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBlLCBpbnQgcmF3VWlkLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCkKIHsKKyAgICB1bnNpZ25lZCB1aWQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmF3VWlkKTsKICAgICBpZiAodHlwZSA9PSBDUFVQcm9maWxlVHlw
ZSkgewogICAgICAgICBQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Byb2ZpbGVzLmZpbmQo
dWlkKTsKICAgICAgICAgaWYgKGl0ICE9IG1fcHJvZmlsZXMuZW5kKCkpIHsKQEAgLTI0MCw4ICsy
NDEsOSBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpyZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiB0eXBlLCB1bnNpZ25lZCB1aWQpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92
ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCByYXdVaWQpCiB7
CisgICAgdW5zaWduZWQgdWlkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhd1VpZCk7CiAgICAg
aWYgKHR5cGUgPT0gQ1BVUHJvZmlsZVR5cGUpIHsKICAgICAgICAgaWYgKG1fcHJvZmlsZXMuY29u
dGFpbnModWlkKSkKICAgICAgICAgICAgIG1fcHJvZmlsZXMucmVtb3ZlKHVpZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCAw
MmJjYjdiNDMyOGE3NWQwYWQyZDU2ZmQ0NDdiZjFmN2U4OTJhZTViLi44NGZhNDY2YmNkNjg3NDgz
ZDA0MDlmNmYyNmE5MmY4MWEzZDY4YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgU2Ny
aXB0UHJvZmlsZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OlByb2ZpbGVyQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEluc3BlY3RvclByb2ZpbGVyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JQcm9maWxlckFn
ZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCos
IFBhZ2UqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwpAQCAtODEs
OSArODEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoYm9vbCBza2lwUmVjb21waWxlKTsK
ICAgICBib29sIGVuYWJsZWQoKSB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICBTdHJpbmcgZ2V0
Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2ZpbGVOdW1i
ZXIgPSBmYWxzZSk7Ci0gICAgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyogZXJy
b3IsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGhlYWRlcnMpOwotICAgIHZvaWQgZ2V0UHJvZmls
ZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkLCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcHJvZmlsZU9iamVjdCk7Ci0gICAgdm9pZCByZW1vdmVQ
cm9maWxlKEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1
aWQpOworICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBoZWFkZXJzKTsKKyAgICB2b2lkIGdldFByb2ZpbGUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCB1aWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBw
cm9maWxlT2JqZWN0KTsKKyAgICB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGludCB1aWQpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCBkOGU0YzY5MDJiZDNiMWVjYzA4NjkyZjFmMmQ4MWFlNTdhZjdmMGRkLi5jYTNi
MGU5MjVkY2M1NTdiZGIwYmMxZmM5MGIzZmNhOGU0ZTU1MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC00NzMsNyAr
NDczLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRVc2VyQWdlbnRPdmVycmlk
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXMKICAgICBtX3N0YXRlLT5zZXRTdHJpbmco
UmVzb3VyY2VBZ2VudFN0YXRlOjp1c2VyQWdlbnRPdmVycmlkZSwgdXNlckFnZW50KTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3Ry
aW5nKiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMpCit2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGVhZGVycykKIHsKICAgICBtX3N0YXRlLT5zZXRPYmpl
Y3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzLCBoZWFkZXJzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CmluZGV4IDhmNmY3NWJmMjdiOGI5NjRiZDQzM2M3YjgyNDdjOTY1MmJmMTQyNTUuLjEwZGQwNjIy
Y2JkZDZkOWFjMDkxZDBiYTIyOWI1OTNlZGJmOTE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNzMsNyArNzMsNyBAQCBj
bGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclJlc291cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvclJlc291cmNlQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvclJlc291
cmNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJlc291cmNlQWdl
bnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Ok5ldHdvcmtDb21tYW5kSGFu
ZGxlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
c3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5z
cGVjdG9yU3RhdGUqIHN0YXRlKQogICAgIHsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcqKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpOwotICAgIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0
cmluZyosIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Pik7CisgICAgdm9pZCBzZXRFeHRyYUhU
VFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mKTsK
ICAgICB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHZvaWQg
Y2xlYXJDYWNoZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxQcmVz
ZXJ2ZWRMb2FkZXJJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaAppbmRleCA3OWEyMDJiODlkYTcxM2M5MjM5OGQ2OGQxZjIyMGQzOTM4
MDg5YmEwLi5iM2I0Mjk2NDNjNjQyOGY1YmQyN2UzYWIxNTZkMjk0NjBjODYxNmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIFdvcmtlckNvbnRleHQ7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUnVudGlt
ZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JSdW50aW1lQWdlbnQ+
LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OlJ1bnRpbWVDb21tYW5kSGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUnVudGltZUFnZW50KTsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKQEAgLTU5LDIyICs1
OSwyMiBAQCBwdWJsaWM6CiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCiAgICAgdm9pZCBl
dmFsdWF0ZShFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdy
b3VwLAotICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogY29uc3QgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLAotICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9u
RXhjZXB0aW9ucywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogY29uc3QgZnJhbWVJ
ZCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsCisg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLAorICAgICAgICAgICAg
ICAgICAgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLAorICAgICAgICAgICAgICAg
ICAgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9ucywKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyogZnJhbWVJZCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJl
dHVybkJ5VmFsdWUsCiAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYg
cmVzdWx0LAogICAgICAgICAgICAgICAgICAgYm9vbCogd2FzVGhyb3duKTsKICAgICB2b2lkIGNh
bGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yQXJyYXk+KiBjb25zdCBvcHRpb25hbEFyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBvcHRpb25hbEFyZ3VtZW50cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCogd2FzVGhyb3duKTsKICAgICB2b2lkIHJlbGVhc2VPYmpl
Y3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkKTsKLSAgICB2b2lkIGdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29s
KiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiByZXN1bHQpOwor
ICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHJl
c3VsdCk7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdEdyb3VwKTsKICAgICB2b2lkIHJ1bihFcnJvclN0cmluZyopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAK
aW5kZXggNWMwYWNkMThiNjQxOWU2MTdlOTNmOGYwOWY3OWYyOTZiYzQ2YjY0Zi4uZDIzYzFlYTIx
ZGI4ZGY1OWJmMWQ5MDBmYTQxNTAyM2ZlOGZjNzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtMTM2LDcgKzEzNiw3
IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmVzdG9yZSgpCiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnN0YXJ0KEVycm9yU3RyaW5nKiwgaW50KiBtYXhD
YWxsU3RhY2tEZXB0aCkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKQogewogICAgIGlmICghbV9mcm9u
dGVuZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggOTJhOTcwY2Q5NTA0YjZjMGU4MzA5NjYzNzNm
ZmZiYWZlZmI5OGU2OC4uNjA2MTljY2RhMjEyOWE2N2IwNTgzMDgzZjFmOGU1NmIxYzU2OTNkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiwgU2NyaXB0R0NF
dmVudExpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+LCBTY3JpcHRHQ0V2ZW50TGlz
dGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6VGltZWxpbmVDb21tYW5k
SGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1lbW9yeUFnZW50KQpAQCAt
NjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpOwogCi0gICAgdm9pZCBzdGFydChFcnJvclN0cmlu
ZyosIGludCogbWF4Q2FsbFN0YWNrRGVwdGgpOworICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoKTsKICAgICB2b2lkIHN0b3AoRXJyb3JTdHJp
bmcqKTsKICAgICB2b2lkIHNldEluY2x1ZGVNZW1vcnlEZXRhaWxzKEVycm9yU3RyaW5nKiwgYm9v
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwCmluZGV4IDc1MTFkYTFkNjkyZjhjOWNjNDIwNWU3OTM2MTdmMTlmMjg4NzYxOWYuLjFi
Mzg1OTU3MWNhZmMyM2U0YzU0MWQzNDljMjYwZGExZmU0ZjNiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMTY5LDcgKzE2
OSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2VyKEVy
cm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtlcklkCiAgICAgICAgICplcnJvciA9ICJXb3JrZXIg
aXMgZ29uZSI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9X
b3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgd29ya2VySWQsIFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBtZXNzYWdlKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1lc3Nh
Z2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJyb3IsIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpCiB7CiAgICAgV29ya2VyRnJvbnRlbmRDaGFubmVs
KiBjaGFubmVsID0gbV9pZFRvQ2hhbm5lbC5nZXQod29ya2VySWQpOwogICAgIGlmIChjaGFubmVs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApp
bmRleCA1OTZmZjE2YWYzMzVlMjU2YTVlZDkyOTI2M2MwZTEwMTAxMWY0YTQwLi5kNDA0Mjc4OTUw
ZGQ4OTM0ZTViMzI0YTkzNzg2OGVjNTJhOTM0OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBX
b3JrZXJDb250ZXh0UHJveHk7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFz
cyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yV29ya2VyQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvcldvcmtlckFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JXb3JrZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvcldvcmtlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7CiAgICAgfkluc3BlY3RvcldvcmtlckFnZW50KCk7
CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdvcmtlckluc3BlY3Rpb25F
bmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBjb25uZWN0VG9Xb3Jr
ZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb21X
b3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwotICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IG1lc3NhZ2UpOworICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmlu
ZyosIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2Up
OwogICAgIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29sIHZh
bHVlKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125535</attachid>
            <date>2012-02-05 14:09:11 -0800</date>
            <delta_ts>2012-02-05 23:39:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77444-20120206020908.patch</filename>
            <type>text/plain</type>
            <size>60579</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM3ZmUyOGU3NDY0ZWZi
ODc0NzMzZDhjZGNlMDJiNzhiZjlhZTkxYi4uMDUyMGQ1OGRlYWRmOGQxNmY3ZDgyZWNhZjUzNDM0
MjAxMjQ1ZGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTMxICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggZG9tYWluIGFnZW50cyB0byBmb3Jt
YWwgaW50ZXJmYWNlcyBpbiBCYWNrZW5kRGlzcGF0Y2hlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0NDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgYWdlbnQgY29kZSBpcyBzd2l0Y2hlZCB0byBm
b3JtYWwgaW50ZXJmYWNlcy4gQWN0dWFsIGFnZW50IGNsYXNzCisgICAgICAgIG5hbWVzIGFuZCBp
bmNsdWRlcyBhcmUgZHJvcHBlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmguCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5weToKKyAgICAgICAg
KERvbWFpbk5hbWVGaXhlcy5nZXRfZml4ZWRfZGF0YSk6CisgICAgICAgIChHZW5lcmF0b3IuZ28p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVU
b0xvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JQcm9m
aWxlckFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
OgorICAgICAgICAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvcldvcmtlckFnZW50KToKKwog
MjAxMi0wMi0wMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gZWRpdGluZy9pbnNlcnRpbmcvNDk2MDEyMC0yLmh0bWwgZmxha3kgY3Jh
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnB5IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucHkKaW5kZXggMDQzNThlZGNiYjUzMWI4NGQ2YzE5OTNkNTlmMmQxM2Q1M2MyMTMzMy4uMjEw
NjQyYmExZThhOGJjY2NjZGE4ZDZjYWI1MjgwZWFhNzNhNTE0NCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucHkKQEAgLTE1MywxNSAr
MTUzLDkgQEAgVkFMSURBVE9SX0lGREVGX05BTUUgPSAiIUFTU0VSVF9ESVNBQkxFRCIKIGNsYXNz
IERvbWFpbk5hbWVGaXhlczoKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2V0X2ZpeGVkX2Rh
dGEoY2xzLCBkb21haW5fbmFtZSk6Ci0gICAgICAgIGlmIGRvbWFpbl9uYW1lIGluIGNscy5hZ2Vu
dF90eXBlX21hcDoKLSAgICAgICAgICAgIGFnZW50X25hbWVfcmVzID0gY2xzLmFnZW50X3R5cGVf
bWFwW2RvbWFpbl9uYW1lXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYWdlbnRfbmFtZV9y
ZXMgPSAiSW5zcGVjdG9yJXNBZ2VudCIgJSBkb21haW5fbmFtZQotCiAgICAgICAgIGZpZWxkX25h
bWVfcmVzID0gQ2FwaXRhbGl6ZXIudXBwZXJfY2FtZWxfY2FzZV90b19sb3dlcihkb21haW5fbmFt
ZSkgKyAiQWdlbnQiCiAKICAgICAgICAgY2xhc3MgUmVzKG9iamVjdCk6Ci0gICAgICAgICAgICBh
Z2VudF90eXBlX25hbWUgPSBhZ2VudF9uYW1lX3JlcwogICAgICAgICAgICAgc2tpcF9qc19iaW5k
ID0gZG9tYWluX25hbWUgaW4gY2xzLnNraXBfanNfYmluZF9kb21haW5zCiAgICAgICAgICAgICBh
Z2VudF9maWVsZF9uYW1lID0gZmllbGRfbmFtZV9yZXMKIApAQCAtMTg0LDcgKzE3OCw2IEBAIGNs
YXNzIERvbWFpbk5hbWVGaXhlczoKICAgICAgICAgcmV0dXJuIFJlcwogCiAgICAgc2tpcF9qc19i
aW5kX2RvbWFpbnMgPSBzZXQoWyJSdW50aW1lIiwgIkRPTURlYnVnZ2VyIl0pCi0gICAgYWdlbnRf
dHlwZV9tYXAgPSB7Ik5ldHdvcmsiOiAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCIsICJJbnNwZWN0
b3IiOiAiSW5zcGVjdG9yQWdlbnQiLCB9CiAKIAogY2xhc3MgQ1BhcmFtVHlwZShvYmplY3QpOgpA
QCAtMTY3NSw4ICsxNjY4LDYgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVj
dG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiAKLSRmb3J3YXJkRGVj
bGFyYXRpb25zCi0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcjogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXI+IHsKQEAgLTE3MzEsNyArMTcyMiw2IEBAICRtZXRob2ROYW1lc0VudW1Db250ZW50
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0kaW5jbHVkZXMK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzQ3LDkgKzE3MzcsOSBAQCBwdWJsaWM6CiAk
Y29uc3RydWN0b3JJbml0CiAgICAgeyB9CiAKLSAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKSB7IG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gMDsgfQotICAgIHZvaWQgZGlzcGF0Y2goY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9u
ZyogY29uc3QgY2FsbElkLCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBQYXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBkYXRhKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJGcm9udGVuZCgpIHsgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSAwOyB9
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAg
dmlydHVhbCB2b2lkIHJlcG9ydFByb3RvY29sRXJyb3IoY29uc3QgbG9uZyogY29uc3QgY2FsbElk
LCBDb21tb25FcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBQYXNzUmVmUHRy
PEluc3BlY3RvckFycmF5PiBkYXRhKSBjb25zdDsKICAgICB1c2luZyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcjsKIAogJHNldHRlcnMKQEAgLTIzOTcsOCAr
MjM4Nyw2IEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICBiYWNrZW5kX3NldHRlcnNfbGlzdCA9IFtd
CiAgICAgYmFja2VuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QgPSBbXQogICAgIGJhY2tlbmRfZmll
bGRfbGlzdCA9IFtdCi0gICAgYmFja2VuZF9mb3J3YXJkX2xpc3QgPSBbXQotICAgIGJhY2tlbmRf
aW5jbHVkZV9saXN0ID0gW10KICAgICBmcm9udGVuZF9jb25zdHJ1Y3Rvcl9pbml0X2xpc3QgPSBb
XQogICAgIHR5cGVfYnVpbGRlcl9mcmFnbWVudHMgPSBbXQogICAgIHR5cGVfYnVpbGRlcl9mb3J3
YXJkcyA9IFtdCkBAIC0yNDU5LDEwICsyNDQ3LDExIEBAIGNsYXNzIEdlbmVyYXRvcjoKICAgICAg
ICAgICAgIGFnZW50X2ludGVyZmFjZV9uYW1lID0gQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2Fz
ZV90b191cHBlcihkb21haW5fbmFtZSkgKyAiQ29tbWFuZEhhbmRsZXIiCiAgICAgICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICBjbGFzcyAl
cyB7XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpCiAgICAgICAgICAgICBHZW5lcmF0b3IuYmFj
a2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICBwdWJsaWM6XG4iKQotICAgICAg
ICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfYWdlbnRfaW50ZXJmYWNlX2xpc3QuYXBwZW5kKCIgICAg
ICAgIHZpcnR1YWwgfiVzKCkgeyB9XG4iICUgYWdlbnRfaW50ZXJmYWNlX25hbWUpOwogICAgICAg
ICAgICAgaWYgImNvbW1hbmRzIiBpbiBqc29uX2RvbWFpbjoKICAgICAgICAgICAgICAgICBmb3Ig
anNvbl9jb21tYW5kIGluIGpzb25fZG9tYWluWyJjb21tYW5kcyJdOgogICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0b3IucHJvY2Vzc19jb21tYW5kKGpzb25fY29tbWFuZCwgZG9tYWluX25hbWUs
IGFnZW50X2ZpZWxkX25hbWUpCisgICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9p
bnRlcmZhY2VfbGlzdC5hcHBlbmQoIlxuICAgIHByb3RlY3RlZDpcbiIpCisgICAgICAgICAgICBH
ZW5lcmF0b3IuYmFja2VuZF9hZ2VudF9pbnRlcmZhY2VfbGlzdC5hcHBlbmQoIiAgICAgICAgdmly
dHVhbCB+JXMoKSB7IH1cbiIgJSBhZ2VudF9pbnRlcmZhY2VfbmFtZSkKICAgICAgICAgICAgIEdl
bmVyYXRvci5iYWNrZW5kX2FnZW50X2ludGVyZmFjZV9saXN0LmFwcGVuZCgiICAgIH07XG5cbiIp
CiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKQEAgLTI0NzcsOSArMjQ2Niw3IEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2NvbnN0cnVjdG9y
X2luaXRfbGlzdCwKICAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1YWxfc2V0dGVy
c19saXN0LAogICAgICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LAotICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZmllbGRfbGlzdCwKLSAgICAgICAgICAgIEdlbmVy
YXRvci5iYWNrZW5kX2ZvcndhcmRfbGlzdCwKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5k
X2luY2x1ZGVfbGlzdF0KKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xpc3Rd
CiAKICAgICAgICAgZm9yIGpzb25fZG9tYWluIGluIHNvcnRlZF9qc29uX2RvbWFpbnM6CiAgICAg
ICAgICAgICBkb21haW5fbmFtZSA9IGpzb25fZG9tYWluWyJkb21haW4iXQpAQCAtMjQ5MywxNCAr
MjQ4MCwxMSBAQCBjbGFzcyBHZW5lcmF0b3I6CiAKICAgICAgICAgICAgIGFnZW50X2ludGVyZmFj
ZV9uYW1lID0gQ2FwaXRhbGl6ZXIubG93ZXJfY2FtZWxfY2FzZV90b191cHBlcihkb21haW5fbmFt
ZSkgKyAiQ29tbWFuZEhhbmRsZXIiCiAKLSAgICAgICAgICAgIGFnZW50X3R5cGVfbmFtZSA9IGRv
bWFpbl9maXhlcy5hZ2VudF90eXBlX25hbWUKICAgICAgICAgICAgIGFnZW50X2ZpZWxkX25hbWUg
PSBkb21haW5fZml4ZXMuYWdlbnRfZmllbGRfbmFtZQogICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LmFwcGVuZCgiICAgICAgICAsIG1fJXMoMCkiICUg
YWdlbnRfZmllbGRfbmFtZSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1YWxf
c2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckFnZW50KCVzIC8q
ICVzICovKiAlcykgPSAwOyIgJSAoYWdlbnRfdHlwZV9uYW1lLCBhZ2VudF9pbnRlcmZhY2VfbmFt
ZSwgYWdlbnRfZmllbGRfbmFtZSkpCi0gICAgICAgICAgICBHZW5lcmF0b3IuYmFja2VuZF9zZXR0
ZXJzX2xpc3QuYXBwZW5kKCIgICAgdm9pZCByZWdpc3RlckFnZW50KCVzIC8qICVzICovKiAlcykg
eyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFnZW50X3R5cGVfbmFtZSwgYWdlbnRf
aW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUsIGFnZW50
X2ZpZWxkX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQotICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfZmllbGRfbGlzdC5hcHBlbmQoIiAgICAlcyAvKiAlcyAqLyogbV8lczsiICUgKGFnZW50
X3R5cGVfbmFtZSwgYWdlbnRfaW50ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQotICAg
ICAgICAgICAgR2VuZXJhdG9yLmJhY2tlbmRfZm9yd2FyZF9saXN0LmFwcGVuZCgiY2xhc3MgJXM7
IiAlIGFnZW50X3R5cGVfbmFtZSkKLSAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2luY2x1
ZGVfbGlzdC5hcHBlbmQoIiNpbmNsdWRlIFwiJXMuaFwiIiAlIGFnZW50X3R5cGVfbmFtZSkKKyAg
ICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX3ZpcnR1YWxfc2V0dGVyc19saXN0LmFwcGVuZCgi
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckFnZW50KCVzKiAlcykgPSAwOyIgJSAoYWdlbnRfaW50
ZXJmYWNlX25hbWUsIGFnZW50X2ZpZWxkX25hbWUpKQorICAgICAgICAgICAgR2VuZXJhdG9yLmJh
Y2tlbmRfc2V0dGVyc19saXN0LmFwcGVuZCgiICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckFnZW50
KCVzKiAlcykgeyBBU1NFUlQoIW1fJXMpOyBtXyVzID0gJXM7IH0iICUgKGFnZW50X2ludGVyZmFj
ZV9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9uYW1lLCBhZ2VudF9maWVsZF9u
YW1lLCBhZ2VudF9maWVsZF9uYW1lKSkKKyAgICAgICAgICAgIEdlbmVyYXRvci5iYWNrZW5kX2Zp
ZWxkX2xpc3QuYXBwZW5kKCIgICAgJXMqIG1fJXM7IiAlIChhZ2VudF9pbnRlcmZhY2VfbmFtZSwg
YWdlbnRfZmllbGRfbmFtZSkpCiAKICAgICAgICAgICAgIGlmIGRvbWFpbl9ndWFyZDoKICAgICAg
ICAgICAgICAgICBmb3IgbCBpbiByZXZlcnNlZChzb3J0ZWRfY3ljbGVfZ3VhcmRhYmxlX2xpc3Rf
bGlzdCk6CkBAIC0yODAyLDE1ICsyNzg2LDEzIEBAIGJhY2tlbmRfanNfZmlsZSA9IG9wZW4ob3V0
cHV0X2NwcF9kaXJuYW1lICsgIi9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyIsICJ3IikKIGJhY2tl
bmRfaF9maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5kX2guc3Vic3RpdHV0ZShOb25lLAogICAg
IHZpcnR1YWxTZXR0ZXJzPWpvaW4oR2VuZXJhdG9yLmJhY2tlbmRfdmlydHVhbF9zZXR0ZXJzX2xp
c3QsICJcbiIpLAogICAgIGFnZW50SW50ZXJmYWNlcz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX2Fn
ZW50X2ludGVyZmFjZV9saXN0LCAiIiksCi0gICAgbWV0aG9kTmFtZXNFbnVtQ29udGVudD1qb2lu
KEdlbmVyYXRvci5tZXRob2RfbmFtZV9lbnVtX2xpc3QsICJcbiIpLAotICAgIGZvcndhcmREZWNs
YXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9mb3J3YXJkX2xpc3QsICJcbiIpKSkKKyAg
ICBtZXRob2ROYW1lc0VudW1Db250ZW50PWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9uYW1lX2VudW1f
bGlzdCwgIlxuIikpKQogCiBiYWNrZW5kX2NwcF9maWxlLndyaXRlKFRlbXBsYXRlcy5iYWNrZW5k
X2NwcC5zdWJzdGl0dXRlKE5vbmUsCiAgICAgY29uc3RydWN0b3JJbml0PWpvaW4oR2VuZXJhdG9y
LmJhY2tlbmRfY29uc3RydWN0b3JfaW5pdF9saXN0LCAiXG4iKSwKICAgICBzZXR0ZXJzPWpvaW4o
R2VuZXJhdG9yLmJhY2tlbmRfc2V0dGVyc19saXN0LCAiXG4iKSwKICAgICBmaWVsZERlY2xhcmF0
aW9ucz1qb2luKEdlbmVyYXRvci5iYWNrZW5kX2ZpZWxkX2xpc3QsICJcbiIpLAogICAgIG1ldGhv
ZE5hbWVEZWNsYXJhdGlvbnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfbmFtZV9kZWNs
YXJhdGlvbl9saXN0LCAiXG4iKSwKLSAgICBpbmNsdWRlcz1qb2luKEdlbmVyYXRvci5iYWNrZW5k
X2luY2x1ZGVfbGlzdCwgIlxuIiksCiAgICAgbWV0aG9kcz1qb2luKEdlbmVyYXRvci5iYWNrZW5k
X21ldGhvZF9pbXBsZW1lbnRhdGlvbl9saXN0LCAiXG4iKSwKICAgICBtZXRob2REZWNsYXJhdGlv
bnM9am9pbihHZW5lcmF0b3IuYmFja2VuZF9tZXRob2RfZGVjbGFyYXRpb25fbGlzdCwgIlxuIiks
CiAgICAgbWVzc2FnZUhhbmRsZXJzPWpvaW4oR2VuZXJhdG9yLm1ldGhvZF9oYW5kbGVyX2xpc3Qs
ICJcbiIpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXgg
ZjdjOGU0OGMyNDY0YjI0ZjNjYzVlYTBiMWJjZWU0YzQ5NDdmYmZkMy4uYTM4YmUyMWVlNjkwOWI4
ZDMzNTQxYzkwYWI0NzdiZjliYjcwMDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckFnZW50IDogcHVibGljIEluc3Bl
Y3RvckJhc2VBZ2VudDxJbnNwZWN0b3JBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFnZW50PiwgcHVibGljIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVyOjpJbnNwZWN0b3JDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQWdlbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPEluc3BlY3RvckFnZW50PiBjcmVhdGUoUGFnZSogcGFnZSwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApp
bmRleCBhYzA5Mjk3NTk5MzI4ZjU0N2VlNTcxMzQ4YzRjZGQwNWI2ZDI3NDZkLi43YWZhM2NmNzJl
ZDM1OTI1MzA2NmZlNTdmNGU3MGZiNWIzZDdjMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC00
OSw3ICs0OSw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudD4gewor
Y2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudDxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI6OkFwcGxpY2F0aW9uQ2FjaGVDb21tYW5kSGFuZGxlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCkKQEAgLTY4LDEwICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBu
ZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CiAKICAgICAvLyBBcHBsaWNhdGlvbkNhY2hlIEFQSSBmb3Ig
SW5zcGVjdG9yRnJvbnRlbmQKLSAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZv
aWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKTsKLSAgICB2b2lk
IGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGFwcGxpY2F0aW9uQ2FjaGUpOworICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4m
IHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpOworICAgIHZp
cnR1YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhcHBsaWNhdGlvbkNh
Y2hlKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRl
eCBiMWE1OWEzOTRiNDdkYjUzNjMyODgyNTU5MWE0NmExMzE3YzI0NTBjLi43YzgxMDhkYjJkMWU4
OTI1ZWNlMDYxNWQ3NmI3ODc0YmE1ZDRiODBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpyZWNhbGNTdHlsZUZvclBzZXVkb1N0YXRlSWZOZWVkZWQoRWxlbWVudCog
ZWxlbWVudCwgSW5zcAogICAgICAgICBlbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2Vs
ZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCi12b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVk
b0NsYXNzZXMsIGJvb2wqIG5lZWRQc2V1ZG8sIGJvb2wqIG5lZWRJbmhlcml0ZWQsIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYg
cHNldWRvSWRSdWxlcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgaW5oZXJpdGVkRW50cmllcykK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5
PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgY29uc3QgYm9vbCogbmVlZFBzZXVkbywgY29uc3QgYm9v
bCogbmVlZEluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbWF0Y2hlZENTU1J1bGVz
LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+JiBpbmhlcml0ZWRFbnRyaWVzKQogewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVt
ZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA3MGIyZGQ5MGE0
Mzc0ZWIwYzgyZDc2NzlmNzg5YWJhMmRjYjliNWU5Li42NGUyNzI0MmMyMWFiNjJmZTRkZWI0ZTI2
NGU1N2MyYWRiZGEyNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBTZWxlY3RvclByb2ZpbGU7CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCi1jbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCA6IHB1YmxpYyBJ
bnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yQ1NTQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yRE9N
QWdlbnQ6OkRPTUxpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvckNTU0FnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDU1NBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JET01B
Z2VudDo6RE9NTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Q1NT
Q29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0Fn
ZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShD
U1NSdWxlKik7CkBAIC03MCwyNiArNzAsMjcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwogICAgIHZp
cnR1YWwgdm9pZCByZXN0b3JlKCk7Ci0gICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKLSAg
ICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAg
ICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogCi0g
ICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mIHN0eWxlKTsKLSAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaW5s
aW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGF0dHJpYnV0ZXMpOwotICAgIHZvaWQg
Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBib29sKiBpbmNsdWRl
UHNldWRvLCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBt
YXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBzZXVkb0lkUnVsZXMsIFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOwotICAgIHZvaWQgZ2V0QWxs
U3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdHlsZVNo
ZWV0SW5mb3MpOwotICAgIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKLSAg
ICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHls
ZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KTsKLSAgICB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4
dCk7Ci0gICAgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdGV4dCwgYm9vbCBvdmVyd3JpdGUsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQp
OwotICAgIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlzYWJsZSwg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRSdWxlU2VsZWN0
b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsK
LSAgICB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQgY29udGV4dE5vZGVJZCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7
Ci0gICAgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgcmVzdWx0KTsKLQotICAgIHZvaWQgc3RhcnRTZWxlY3RvclByb2Zp
bGVyKEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CisgICAgdmlydHVhbCB2b2lkIGdldENv
bXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRvQ2xhc3NlcywgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiYgc3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGlubGluZVN0
eWxlLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhdHRyaWJ1dGVzKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHBz
ZXVkb0lkUnVsZXMsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGluaGVyaXRlZEVudHJpZXMpOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4mIHN0eWxlU2hlZXRJbmZvcyk7CisgICAgdmlydHVhbCB2b2lkIGdldFN0
eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyog
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBjb25zdCBTdHJpbmcm
IHRleHQsIGJvb2wgb3ZlcndyaXRlLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgc3R5bGVJZCwgaW50IHByb3BlcnR5SW5kZXgsIGJvb2wgZGlz
YWJsZSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lk
IHNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiBydWxlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nKiwgaW50
IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KTsKKworICAg
IHZpcnR1YWwgdm9pZCBzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYpOworCiAgICAgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlckltcGwoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogPSAwKTsKICAgICB2b2lkIHdpbGxN
YXRjaFJ1bGUoY29uc3QgQ1NTU3R5bGVSdWxlKik7CiAgICAgdm9pZCBkaWRNYXRjaFJ1bGUoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmgKaW5kZXggNzEyM2JlODBjN2ZiNDA4ZWU4ODVkODQ3OGIxNTE2N2IwZGI1NWFhZC4uMzAyNDI5
YTQ1NGNjMWU0NWY0YWIwZDlkMGUwYWNjODA5NjhhZWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtNTIsMTQgKzUyLDE0IEBA
IGNsYXNzIFNjcmlwdFByb2ZpbGU7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1j
bGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvckNvbnNvbGVBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50IDogcHVi
bGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JDb25zb2xlQWdlbnQ+LCBwdWJsaWMgSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNvbnNvbGVDb21tYW5kSGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ29uc29sZUFnZW50KTsKIHB1YmxpYzoKICAgICBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRl
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29uc29s
ZUFnZW50KCk7CiAKLSAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgZGlz
YWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwg
dm9pZCBjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgpOwogCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hlZE1lc3Nh
Z2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdN
ZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICNlbmRpZgotICAgIHZvaWQgc2V0TW9uaXRvcmlu
Z1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9yLCBib29sIGVuYWJsZWQpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxl
ZCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDI4YzBmM2I3ZDAxOTk3OTdmMTE2MTkyNTUwZjRk
Y2I3NzBjY2E1MzEuLmFiM2I0OWQzYjg4NzAxNmE1MTY3ZTNjMTE0MDU1ODU2OGE5ZGNlMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
OTc1LDcgKzk3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJy
b3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50CiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHROb2RlKAogICAgIEVycm9yU3RyaW5nKiwKICAgICBpbnQgbm9kZUlk
LAotICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdodENvbmZpZykKKyAg
ICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnKQogewogICAg
IGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpIHsKICAgICAgICAgaWYgKHNldEhp
Z2hsaWdodERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZy5nZXQoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggMDFjNDlkY2NjODA1
ZjEyNTcxN2RmMWNmYWJlYTIwZjdlZTZjZmRmNS4uNDNkMDg4MTRhOGZkOTljNTI5NWUzZTcxYThl
NjBiYTJhMzkxMGM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IEV2ZW50TGlzdGVuZXJJbmZvIHsKICAg
ICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yIGV2ZW50TGlzdGVuZXJWZWN0b3I7CiB9OwogCi1j
bGFzcyBJbnNwZWN0b3JET01BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yRE9NQWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckRPTUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudDxJbnNwZWN0b3JET01BZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcjo6RE9NQ29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
c3BlY3RvckRPTUFnZW50KTsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewpAQCAt
MTE2LDMyICsxMTYsMzIgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIE1l
dGhvZHMgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4K
LSAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpOwotICAgIHZvaWQgcXVlcnlTZWxlY3Rv
ckFsbChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiByZXN1bHQpOwotICAgIHZvaWQgZ2V0RG9jdW1lbnQoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcm9vdCk7Ci0gICAgdm9pZCByZXF1
ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQpOwotICAgIHZvaWQgc2V0QXR0
cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChF
cnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBuYW1lKTsKLSAgICB2b2lkIHJlbW92ZUF0dHJpYnV0ZShFcnJvclN0cmluZyos
IGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCByZW1vdmVOb2Rl
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7Ci0gICAgdm9pZCBzZXROb2RlTmFtZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50KiBuZXdJZCk7Ci0gICAg
dm9pZCBnZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyog
b3V0ZXJIVE1MKTsKLSAgICB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKTsKLSAgICB2b2lkIHNldE5vZGVWYWx1ZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgZ2V0
RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgbGlzdGVuZXJzQXJyYXkpOwotICAgIHZvaWQgcGVyZm9ybVNlYXJjaChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5n
KiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCk7Ci0gICAgdm9pZCBnZXRTZWFyY2hSZXN1bHRz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50
IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mKTsKLSAgICB2b2lkIGRpc2NhcmRTZWFy
Y2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7Ci0gICAgdm9p
ZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogY29u
c3Qgb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOwotICAgIHZv
aWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4mIHJlc3VsdCk7Ci0gICAgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JT
dHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdo
bGlnaHRDb25maWcpOwotICAgIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCk7Ci0gICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRv
RnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsK
LSAgICB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGhpZ2hsaWdo
dFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKLSAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBoaWdobGln
aHRDb25maWcpOwotICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7Ci0gICAgdm9pZCBtb3Zl
VG8oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25zdCBpbnQq
IGNvbnN0IGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOworICAgIHZpcnR1YWwgdm9pZCBx
dWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxl
Y3RvcnMsIGludCogZWxlbWVudElkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFs
bChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVu
dChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByb290KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVu
dElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpOworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJp
bmcmIG5hbWUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCk7CisgICAgdmlydHVhbCB2b2lkIHNldE5vZGVOYW1lKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQqIG5ld0lkKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91
dGVySFRNTCk7CisgICAgdmlydHVhbCB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7
CisgICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGxpc3RlbmVyc0FycmF5KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
d2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3Vu
dCk7CisgICAgdmlydHVhbCB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25z
dCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpOworICAgIHZpcnR1YWwgdm9pZCBy
ZXNvbHZlTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0
R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVk
KEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCk7CisgICAgdmlydHVh
bCB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgaW50KiBub2RlSWQpOworICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KEVy
cm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcq
LCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGlu
ZUNvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25maWcp
OworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29u
c3QgaW50KiBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsKIAogICAgIE5vZGUqIGhpZ2hs
aWdodGVkTm9kZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCBjNDlmNmJlYzU4OTM1YWJhY2Q1Y2Q4
Njc0Yjc4MjdiZjRlMmQ1NjdjLi45NjgzYTU4ZGI3ODY0MGM1YjFiM2ZlZTE2ZmE5YTVhOTYzMzQ3
YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+LCBwdWJs
aWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIgeworY2xhc3MgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVi
bGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpET01EZWJ1Z2dlckNvbW1hbmRIYW5kbGVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5zcGVjdG9y
RE9NQWdlbnQqLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKQEAg
LTYyLDE0ICs2MiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVu
ZAotICAgIHZvaWQgc2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
dXJsKTsKLSAgICB2b2lkIHJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVybCk7Ci0gICAgdm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlz
dGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpOwot
ICAgIHZvaWQgc2V0SW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgZXZlbnROYW1lKTsKLSAgICB2b2lkIHJlbW92ZUluc3RydW1lbnRhdGlvbkJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdm9pZCBz
ZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0
eXBlKTsKLSAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRYSFJCcmVha3Bv
aW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUluc3Ry
dW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSk7CisgICAgdmlydHVhbCB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01C
cmVha3BvaW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKTsK
IAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKICAgICB2b2lkIHdpbGxJbnNl
cnRET01Ob2RlKE5vZGUqLCBOb2RlKiBwYXJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4IGJkMWQ2YTcxOWNlOGIy
MTRjMDUyYjkwOWMzOGYwODdkNjNkYzk2NzguLmJlZmJkOTAyMjEyZjI0MWZkMmNiYjMyMWRkNzI3
NmVlMmUxYmUwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWE7
CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudD4geworY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50IDogcHVibGljIEluc3BlY3Rv
ckJhc2VBZ2VudDxJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXI6OkRPTVN0b3JhZ2VDb21tYW5kSGFuZGxlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50PiBjcmVhdGUoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRl
KQogICAgIHsKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclJlc291
cmNlcygpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KLSAgICB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAg
IHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoRXJyb3JTdHJpbmcqLCBpbnQgc3RvcmFnZUlkLCBS
ZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBlbnRyaWVzKTsKLSAgICB2b2lkIHNldERPTVN0b3JhZ2VJ
dGVtKEVycm9yU3RyaW5nKiwgaW50IHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOwotICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFn
ZUl0ZW0oRXJyb3JTdHJpbmcqLCBpbnQgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCogc3VjY2Vzcyk7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGdl
dERPTVN0b3JhZ2VFbnRyaWVzKEVycm9yU3RyaW5nKiwgaW50IHN0b3JhZ2VJZCwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgZW50cmllcyk7CisgICAgdmlydHVhbCB2b2lkIHNldERPTVN0b3JhZ2VJ
dGVtKEVycm9yU3RyaW5nKiwgaW50IHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGJvb2wqIHN1Y2Nlc3MpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVE
T01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGludCBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKiBzdWNjZXNzKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBpbmplY3RlZCBz
Y3JpcHQuCiAgICAgaW50IHN0b3JhZ2VJZChTdG9yYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCBjOWMyYzUzYzQ0ZDVk
MzU0MzEwODUwMDdiODljMjliMWIxMDI2ODA2Li4xMzA4YzAwMWYwZGRhOWIyYjZkOTkwMGZjNjFh
N2MzMjgyZThhNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRh
dGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNl
QWdlbnQ+IHsKK2NsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9y
QmFzZUFnZW50PEluc3BlY3RvckRhdGFiYXNlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXI6OkRhdGFiYXNlQ29tbWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIGNsYXNz
IEZyb250ZW5kUHJvdmlkZXI7CiAKQEAgLTYyLDEwICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhclJlc291cmNlcygpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4K
LSAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyopOwotICAgIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgaW50
IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5hbWVzKTsKLSAgICB2b2lkIGV4
ZWN1dGVTUUwoRXJyb3JTdHJpbmcqLCBpbnQgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVy
eSwgYm9vbCogc3VjY2VzcywgaW50KiB0cmFuc2FjdGlvbklkKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5n
KiwgaW50IGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5hbWVzKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGludCBkYXRhYmFzZUlkLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBib29sKiBzdWNjZXNzLCBpbnQqIHRyYW5zYWN0aW9uSWQpOwogCiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBpbnQgZGF0YWJhc2VJ
ZChEYXRhYmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGYzMmNlYTNkNjUxYzZhYjYzODY0ZmVkNTZlMDJmZTFk
NGM5NDZiYzMuLjNmMTg5MmM0MWQ2NzQ5NDViMzg3NzNiNjIwMjllNzdiMDRkNDNiMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9j
YXRpb24sIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0
QnJlYWtwb2ludElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pCit2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0
IFN0cmluZyogY29uc3Qgb3B0aW9uYWxDb25kaXRpb24sIFN0cmluZyogb3V0QnJlYWtwb2ludElk
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgYWN0dWFsTG9jYXRpb24pCiB7CiAgICAgU3RyaW5n
IHNjcmlwdElkOwogICAgIGludCBsaW5lTnVtYmVyOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgYnJlYWtwCiAgICAgbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElkcy5yZW1vdmUoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IpOwogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2NhdGlvbikKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKQog
ewogICAgIGlmICghbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQuaXNFbXB0eSgpKSB7
CiAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVl
VG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA4ZTcyZWJlNWFhMjI2Y2ExZDQ5MzUyNjM2
MjkyYWJmMDQ5Nzk5Y2E1Li4yZmQ5ODdkOTM1MDIzZjc1NWNmY2YxNjU5YTc3NDdhODhmZTA5NWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgKQEAgLTU4LDE5ICs1OCwxOSBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIAogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ+LCBwdWJsaWMgU2Ny
aXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGlj
IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiwgcHVibGljIFNjcmlw
dERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RGVidWdn
ZXJDb21tYW5kSGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBiYWNrdHJhY2VPYmplY3RHcm91cDsKIAogICAgIHZpcnR1YWwgfkluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoKTsKIAotICAgIHZvaWQgY2F1c2VzUmVjb21waWxhdGlvbihFcnJv
clN0cmluZyosIGJvb2wqKTsKLSAgICB2b2lkIGNhblNldFNjcmlwdFNvdXJjZShFcnJvclN0cmlu
ZyosIGJvb2wqKTsKLSAgICB2b2lkIHN1cHBvcnRzTmF0aXZlQnJlYWtwb2ludHMoRXJyb3JTdHJp
bmcqLCBib29sKik7CisgICAgdmlydHVhbCB2b2lkIGNhdXNlc1JlY29tcGlsYXRpb24oRXJyb3JT
dHJpbmcqLCBib29sKik7CisgICAgdmlydHVhbCB2b2lkIGNhblNldFNjcmlwdFNvdXJjZShFcnJv
clN0cmluZyosIGJvb2wqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3VwcG9ydHNOYXRpdmVCcmVha3Bv
aW50cyhFcnJvclN0cmluZyosIGJvb2wqKTsKIAotICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
Kik7Ci0gICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGVu
YWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5n
Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwpAQCAtNzksMzIgKzc5LDMyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAKICAgICAv
LyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KLSAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVy
cm9yU3RyaW5nKiwgYm9vbCBhY3RpdmUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50
c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0aXZlKTsKIAotICAgIHZvaWQgc2V0QnJlYWtw
b2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29u
c3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29u
c3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBv
cHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIGxvY2F0aW9ucyk7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvY2F0aW9uLCBjb25zdCBTdHJpbmcqIGNvbnN0
IG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIGFjdHVhbExvY2F0aW9uKTsKLSAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7Ci0gICAgdm9pZCBjb250aW51
ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9j
YXRpb24pOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcq
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsQ29uZGl0aW9uLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgbG9jYXRpb25zKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtw
b2ludChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlv
biwgY29uc3QgU3RyaW5nKiBvcHRpb25hbENvbmRpdGlvbiwgU3RyaW5nKiBicmVha3BvaW50SWQs
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBhY3R1YWxMb2NhdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9p
bnRJZCk7CisgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbik7CiAKLSAgICB2b2lkIHNl
YXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0
IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
Jik7Ci0gICAgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0IHBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+JiByZXN1bHQpOwotICAgIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwotICAg
IHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5j
dGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZGV0YWlscyk7CisgICAgdmlydHVhbCB2
b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogcHJldmll
dywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZGV0YWlscyk7CiAg
ICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGNvbnN0IFN0cmluZyYgYnJlYWtS
ZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNl
bFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CiAgICAgdm9pZCBicmVha1Byb2dyYW0oY29uc3QgU3Ry
aW5nJiBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwotICAg
IHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIHJlc3VtZShFcnJvclN0cmluZyop
OwotICAgIHZvaWQgc3RlcE92ZXIoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIHN0ZXBJbnRvKEVy
cm9yU3RyaW5nKik7Ci0gICAgdm9pZCBzdGVwT3V0KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBz
ZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF1c2VTdGF0
ZSk7Ci0gICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwKKyAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKEVy
cm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIHN0ZXBPdmVyKEVycm9yU3RyaW5nKik7Cisg
ICAgdmlydHVhbCB2b2lkIHN0ZXBJbnRvKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lk
IHN0ZXBPdXQoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VPbkV4Y2Vw
dGlvbnMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpOworICAgIHZpcnR1
YWwgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIGNvbnN0IG9iamVjdEdyb3VwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCBpbmNsdWRlQ29tbWFuZExpbmVB
UEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVy
bkJ5VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogb2Jq
ZWN0R3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9v
bCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCogd2FzVGhyb3duKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudC5oCmluZGV4IDAwM2E5YzU1OWY4ZTE2NjA5MmI0OWU4ZmJiYTY1
OGRjNzQ2ODU1YTMuLmQ1MzY0M2M0ZjNlMzYwMDdjZGE1NTcwNjI4MzJlZDQwODczNGYyMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGaWxlU3lzdGVtQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFn
ZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJ
bnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiAKLWNsYXNzIEluc3Bl
Y3RvckZpbGVTeXN0ZW1BZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQgOiBwdWJs
aWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudD4sIHB1YmxpYyBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6RmlsZVN5c3RlbUNvbW1hbmRIYW5kbGVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ+IGNy
ZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQoKTsKQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7CiAg
ICAgdm9pZCBmaWxlU3lzdGVtSW52YWxpZGF0ZWQoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPik7
CiAKLSAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJv
bnRlbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmgKaW5kZXggZThjNzcxNjFkNTFlM2U0YmZiZGUyNjI5NjNlODlkMzgxMzQ0Yjdi
Zi4uMWI0NmRkMTQzNmVhMzA0ZjRlMjQ1MjAwOWE5ODMzNmZiY2JmYzA4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTQz
LDcgKzQzLDcgQEAgY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogCiB0eXBlZGVmIFN0cmluZyBF
cnJvclN0cmluZzsKIAotY2xhc3MgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckluZGV4ZWREQkFnZW50PiB7CitjbGFzcyBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkluZGV4ZWRE
QkNvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBGcm9udGVuZFByb3ZpZGVyOwog
CkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7
CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgotICAgIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nKik7Ci0gICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBy
ZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKLSAgICB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0
cmluZyosIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFi
YXNlKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7CiBwcml2YXRlOgogICAgIEluc3BlY3RvckluZGV4
ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3Rv
clBhZ2VBZ2VudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oCmluZGV4IGFiNTMwNWVlNmU0Yzc1ZWM1YmVjZDVmMjMwNzc2MWEwZTEwYjlk
Y2IuLjMyMGFiZDk4ZTM0NWFhMjBlMmVhMGVmMTcxZWE0ZDUyOWYzYjJiMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFz
cyBJbnNwZWN0b3JNZW1vcnlBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yTWVtb3J5QWdlbnQ+IHsKK2NsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50IDogcHVibGljIElu
c3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JNZW1vcnlBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjo6TWVtb3J5Q29tbWFuZEhhbmRsZXIgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEluc3BlY3Rvck1lbW9yeUFnZW50KTsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPiA+IEluc3BlY3RvckFnZW50
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRl
eCBkNjFjMDkzOWVjMDE4ZTBmMDE2NGM5YzM2NzE2ZTE4Njg3NGY0ZmQ4Li41OWVkNzA5ZDdiZDU2
NjBkZmUzZTE4NjJkNjUxN2ZhYTQyYjA1ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclBh
Z2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUGFnZUFnZW50PiB7
CitjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PElu
c3BlY3RvclBhZ2VBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UGFn
ZUNvbW1hbmRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdl
QWdlbnQpOwogcHVibGljOgogICAgIGVudW0gUmVzb3VyY2VUeXBlIHsKQEAgLTg3LDIwICs4Nywy
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjYWNoZWRSZXNvdXJjZVR5cGVTdHJpbmco
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIC8vIFBhZ2UgQVBJIGZvciBJbnNwZWN0b3JG
cm9udGVuZAotICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KTsKLSAgICB2b2lk
IHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpOwotICAgIHZvaWQgcmVsb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCog
Y29uc3Qgb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFNjcmlwdFRv
RXZhbHVhdGVPbkxvYWQpOwotICAgIHZvaWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVybCk7Ci0gICAgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPElu
c3BlY3RvckFycmF5PiYgY29va2llcywgV1RGOjpTdHJpbmcqIGNvb2tpZXNTdHJpbmcpOwotICAg
IHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
LCBjb25zdCBTdHJpbmcmIGRvbWFpbik7Ci0gICAgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOwotICAgIHZvaWQgZ2V0UmVzb3VyY2VD
b250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcm
IHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKLSAgICB2b2lkIHNl
YXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRp
b25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVm
UHRyPEluc3BlY3RvckFycmF5PiYpOwotICAgIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjb25zdCBjYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBjb25zdCBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7Ci0gICAg
dm9pZCBzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFN0cmluZyYgaHRtbCk7Ci0gICAgdm9pZCBzZXRTY3JlZW5TaXplT3ZlcnJpZGUo
RXJyb3JTdHJpbmcqLCBjb25zdCBpbnQgd2lkdGgsIGNvbnN0IGludCBoZWlnaHQpOworICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25M
b2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CisgICAgdmlydHVhbCB2b2lkIHJlbG9hZChF
cnJvclN0cmluZyosIGNvbnN0IGJvb2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKTsKKyAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdmlydHVhbCB2b2lk
IGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBjb29raWVz
LCBXVEY6OlN0cmluZyogY29va2llc1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5n
JiBkb21haW4pOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJj
ZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOworICAgIHZpcnR1
YWwgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCog
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBj
b25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jik7CisgICAgdmlydHVh
bCB2b2lkIHNldERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCwgY29uc3QgU3RyaW5nJiBodG1sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyZWVuU2l6
ZU92ZXJyaWRlKEVycm9yU3RyaW5nKiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAogICAgIC8v
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKICAgICB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGZkZDU2YTg2
NWJkYjEwZTdhMmMxNGNjZWNkOTM4NWIyZTBmZTMxYjMuLjZhZGFhMzQxNDU2YzJjNDM4NjAwOWUz
OWJkMWQ4MTU1Mzc1ODgzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTIxNyw4ICsyMTcsOSBAQCBwcml2YXRlOgog
CiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2Zp
bGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3QpCit2b2lkIEluc3BlY3RvclByb2ZpbGVy
QWdlbnQ6OmdldFByb2ZpbGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCBy
YXdVaWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBwcm9maWxlT2JqZWN0KQogeworICAgIHVu
c2lnbmVkIHVpZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYXdVaWQpOwogICAgIGlmICh0eXBl
ID09IENQVVByb2ZpbGVUeXBlKSB7CiAgICAgICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBpdCA9
IG1fcHJvZmlsZXMuZmluZCh1aWQpOwogICAgICAgICBpZiAoaXQgIT0gbV9wcm9maWxlcy5lbmQo
KSkgewpAQCAtMjQwLDggKzI0MSw5IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0
UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduCiAgICAgfQog
fQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlbW92ZVByb2ZpbGUoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCkKK3ZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6cmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlw
ZSwgaW50IHJhd1VpZCkKIHsKKyAgICB1bnNpZ25lZCB1aWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmF3VWlkKTsKICAgICBpZiAodHlwZSA9PSBDUFVQcm9maWxlVHlwZSkgewogICAgICAgICBp
ZiAobV9wcm9maWxlcy5jb250YWlucyh1aWQpKQogICAgICAgICAgICAgbV9wcm9maWxlcy5yZW1v
dmUodWlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
cm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oCmluZGV4IDAyYmNiN2I0MzI4YTc1ZDBhZDJkNTZmZDQ0N2JmMWY3ZTg5MmFlNWIu
LjYzZjI1MGNmNDgxZmU0NGYyMzcwZGIzN2M2YTlhZDY4MjZjODY0YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNTUsNyAr
NTUsNyBAQCBjbGFzcyBTY3JpcHRQcm9maWxlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4s
IHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UHJvZmlsZXJDb21tYW5kSGFuZGxl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVj
dG9yQ29uc29sZUFnZW50KiwgUGFnZSosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKik7CkBAIC02NCwzNSArNjQsMzUgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUHJvZmls
ZShQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICB2b2lkIGFkZFByb2ZpbGVGaW5pc2hl
ZE1lc3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgYWRkU3RhcnRQcm9m
aWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lkIGNvbGxlY3RHYXJiYWdl
KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBjbGVhclByb2ZpbGVzKEVycm9yU3RyaW5nKikgeyBy
ZXNldFN0YXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEdhcmJhZ2UoRXJyb3JTdHJp
bmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQcm9maWxlcyhFcnJvclN0cmluZyopIHsgcmVz
ZXRTdGF0ZSgpOyB9CiAgICAgdm9pZCByZXNldFN0YXRlKCk7CiAKLSAgICB2b2lkIGNhdXNlc1Jl
Y29tcGlsYXRpb24oRXJyb3JTdHJpbmcqLCBib29sKik7Ci0gICAgdm9pZCBpc1NhbXBsaW5nKEVy
cm9yU3RyaW5nKiwgYm9vbCopOwotICAgIHZvaWQgaGFzSGVhcFByb2ZpbGVyKEVycm9yU3RyaW5n
KiwgYm9vbCopOworICAgIHZpcnR1YWwgdm9pZCBjYXVzZXNSZWNvbXBpbGF0aW9uKEVycm9yU3Ry
aW5nKiwgYm9vbCopOworICAgIHZpcnR1YWwgdm9pZCBpc1NhbXBsaW5nKEVycm9yU3RyaW5nKiwg
Ym9vbCopOworICAgIHZpcnR1YWwgdm9pZCBoYXNIZWFwUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBi
b29sKik7CiAKLSAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyopOwotICAgIHZvaWQgc3RhcnQoRXJyb3JTdHJpbmcqID0gMCk7Ci0gICAg
dm9pZCBzdG9wKEVycm9yU3RyaW5nKiA9IDApOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydChFcnJvclN0cmluZyogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcChFcnJvclN0cmluZyogPSAwKTsKIAogICAgIHZvaWQgZGlzYWJsZSgpOwogICAgIHZvaWQg
ZW5hYmxlKGJvb2wgc2tpcFJlY29tcGlsZSk7CiAgICAgYm9vbCBlbmFibGVkKCkgeyByZXR1cm4g
bV9lbmFibGVkOyB9CiAgICAgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpOwotICAgIHZvaWQgZ2V0UHJv
ZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBo
ZWFkZXJzKTsKLSAgICB2b2lkIGdldFByb2ZpbGUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBT
dHJpbmcmIHR5cGUsIHVuc2lnbmVkIHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2Zp
bGVPYmplY3QpOwotICAgIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyogZXJyb3IsIGNv
bnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJv
ZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBoZWFkZXJz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgaW50IHVpZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHByb2ZpbGVPYmplY3Qp
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBpbnQgdWlkKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKIAotICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChFcnJv
clN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5n
Kik7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAKLSAg
ICB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5nKiwgaW50IGlkLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0
QnlIZWFwT2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBpbnQgaWQsIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+JiByZXN1bHQpOwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBp
bnQsIFJlZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGQ4ZTRj
NjkwMmJkM2IxZWNjMDg2OTJmMWYyZDgxYWU1N2FmN2YwZGQuLmNhM2IwZTkyNWRjYzU1N2JkYjBi
YzFmYzkwYjNmY2E4ZTRlNTUzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OnNldFVzZXJBZ2VudE92ZXJyaWRlKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiB1cwogICAgIG1fc3RhdGUtPnNldFN0cmluZyhSZXNvdXJjZUFnZW50U3Rh
dGU6OnVzZXJBZ2VudE92ZXJyaWRlLCB1c2VyQWdlbnQpOwogfQogCi12b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiBoZWFkZXJzKQogewogICAgIG1fc3RhdGUtPnNldE9iamVjdChSZXNvdXJjZUFnZW50
U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMsIGhlYWRlcnMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggOGY2Zjc1YmYy
N2I4Yjk2NGJkNDMzYzdiODI0N2M5NjUyYmYxNDI1NS4uMDk5ZmE3NmRmZGExNWM2NmUzMGMxNDJk
OTZlNzhlMzVjNDU0YWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOwogCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3Mg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudD4geworY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA6IHB1Ymxp
YyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUmVzb3VyY2VBZ2VudD4sIHB1YmxpYyBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TmV0d29ya0NvbW1hbmRIYW5kbGVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JSZXNvdXJjZUFnZW50PiBjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50
KiBwYWdlQWdlbnQsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbnNwZWN0b3JTdGF0ZSogc3Rh
dGUpCiAgICAgewpAQCAtMTIzLDE4ICsxMjMsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVz
b3VyY2VzRGF0YVNpemVMaW1pdHNGcm9tSW50ZXJuYWxzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29u
dGVudFNpemUsIGludCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CiAKICAgICAv
LyBDYWxsZWQgZnJvbSBmcm9udGVuZAotICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0g
ICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBzZXRVc2VyQWdlbnRPdmVy
cmlkZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICB2b2lkIHNl
dEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4pOwotICAgIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CisgICAg
dmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZXJBZ2VudE92ZXJyaWRl
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0
RW5jb2RlZCk7CisgICAgLy8gRklYTUU6IHRoaXMgc2VlbXMgdG8gYmUgdW5zdWVkLgogICAgIHZv
aWQgY2xlYXJDYWNoZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxQ
cmVzZXJ2ZWRMb2FkZXJJZCk7CiAKLSAgICB2b2lkIGNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9y
U3RyaW5nKiwgYm9vbCopOwotICAgIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcq
KTsKLSAgICB2b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqLCBib29sKik7
Ci0gICAgdm9pZCBjbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBz
ZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBjYWNoZURpc2FibGVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKik7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKik7CisgICAgdmly
dHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqLCBib29sKik7Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2FjaGVEaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgY2FjaGVEaXNh
YmxlZCk7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVj
dG9yU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAppbmRleCA3OWEyMDJiODlkYTcxM2M5MjM5OGQ2OGQxZjIyMGQzOTM4MDg5YmEw
Li42MjdkYTczZWE1MjhlMzhmMzAzY2VhNWRlYmFmY2E1NjJjYWU5YzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01MSwzMiAr
NTEsMzIgQEAgY2xhc3MgV29ya2VyQ29udGV4dDsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CiAKLWNsYXNzIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNl
QWdlbnQ8SW5zcGVjdG9yUnVudGltZUFnZW50PiB7CitjbGFzcyBJbnNwZWN0b3JSdW50aW1lQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclJ1bnRpbWVBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6UnVudGltZUNvbW1hbmRIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JSdW50aW1lQWdlbnQpOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpOwogCiAgICAgLy8gUGFydCBv
ZiB0aGUgcHJvdG9jb2wuCi0gICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyosCisgICAgdmly
dHVhbCB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nKiwKICAgICAgICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogY29u
c3Qgb2JqZWN0R3JvdXAsCi0gICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCBpbmNs
dWRlQ29tbWFuZExpbmVBUEksCi0gICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBjb25zdCBk
b05vdFBhdXNlT25FeGNlcHRpb25zLAotICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBj
b25zdCBmcmFtZUlkLAotICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogY29uc3QgcmV0dXJu
QnlWYWx1ZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsCisg
ICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksCisgICAg
ICAgICAgICAgICAgICBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zLAorICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nKiBmcmFtZUlkLAorICAgICAgICAgICAgICAgICAgY29u
c3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICBib29sKiB3YXNUaHJvd24pOwot
ICAgIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqLAorICAgIHZpcnR1YWwgdm9pZCBj
YWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIG9iamVjdElkLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVmUHRyPEluc3Bl
Y3RvckFycmF5PiogY29uc3Qgb3B0aW9uYWxBcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5Piogb3B0aW9uYWxBcmd1bWVudHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wqIHdhc1Rocm93bik7Ci0gICAgdm9pZCByZWxlYXNlT2Jq
ZWN0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCk7Ci0gICAgdm9pZCBnZXRQ
cm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9v
bCogY29uc3Qgb3duUHJvcGVydGllcywgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcmVzdWx0KTsK
LSAgICB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b2JqZWN0R3JvdXApOwotICAgIHZvaWQgcnVuKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2
b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApOworICAgIHZpcnR1YWwgdm9pZCBy
dW4oRXJyb3JTdHJpbmcqKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAg
IHZvaWQgc2V0U2NyaXB0RGVidWdTZXJ2ZXIoU2NyaXB0RGVidWdTZXJ2ZXIqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRl
eCA1YzBhY2QxOGI2NDE5ZTYxN2U5M2Y4ZjA5Zjc5ZjI5NmJjNDZiNjRmLi5kMjNjMWVhMjFkYjhk
ZjU5YmYxZDkwMGZhNDE1MDIzZmU4ZmM3NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXN0b3JlKCkKICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c3RhcnQoRXJyb3JTdHJpbmcqLCBpbnQqIG1heENhbGxT
dGFja0RlcHRoKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpzdGFydChFcnJvclN0cmlu
ZyosIGNvbnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGgpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5k
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCA5MmE5NzBjZDk1MDRiNmMwZTgzMDk2NjM3M2ZmZmJh
ZmVmYjk4ZTY4Li5kYzBiOWU0ZjY5NGM0OTkxMjE2YmUwMWM5ODk0ZGFiZWQ5MWJlYmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgK
QEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogdHlwZWRlZiBTdHJp
bmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvclRpbWVsaW5lQWdlbnQ+LCBTY3JpcHRHQ0V2ZW50
TGlzdGVuZXIgeworY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0
b3JCYXNlQWdlbnQ8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4sIFNjcmlwdEdDRXZlbnRMaXN0ZW5l
ciwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpUaW1lbGluZUNvbW1hbmRIYW5k
bGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JUaW1lbGluZUFnZW50PiBj
cmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9y
U3RhdGUqIHN0YXRlLCBJbnNwZWN0b3JNZW1vcnlBZ2VudCogbWVtb3J5QWdlbnQpCkBAIC02OCw5
ICs2OCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOwogICAg
IHZpcnR1YWwgdm9pZCByZXN0b3JlKCk7CiAKLSAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwg
aW50KiBtYXhDYWxsU3RhY2tEZXB0aCk7Ci0gICAgdm9pZCBzdG9wKEVycm9yU3RyaW5nKik7Ci0g
ICAgdm9pZCBzZXRJbmNsdWRlTWVtb3J5RGV0YWlscyhFcnJvclN0cmluZyosIGJvb2wpOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydChFcnJvclN0cmluZyosIGNvbnN0IGludCogbWF4Q2FsbFN0YWNr
RGVwdGgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVh
bCB2b2lkIHNldEluY2x1ZGVNZW1vcnlEZXRhaWxzKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAKICAg
ICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDc1MTFkYTFkNjkyZjhj
OWNjNDIwNWU3OTM2MTdmMTlmMjg4NzYxOWYuLjFiMzg1OTU3MWNhZmMyM2U0YzU0MWQzNDljMjYw
ZGExZmU0ZjNiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSW5zcGVjdG9yV29ya2Vy
QWdlbnQ6OmRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IHdvcmtl
cklkCiAgICAgICAgICplcnJvciA9ICJXb3JrZXIgaXMgZ29uZSI7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yV29ya2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqIGVycm9yLCBp
bnQgd29ya2VySWQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBtZXNzYWdlKQordm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyogZXJy
b3IsIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2Up
CiB7CiAgICAgV29ya2VyRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9pZFRvQ2hhbm5lbC5n
ZXQod29ya2VySWQpOwogICAgIGlmIChjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAppbmRleCA1OTZmZjE2YWYzMzVlMjU2YTVlZDky
OTI2M2MwZTEwMTAxMWY0YTQwLi5iZTMzYTUwNzE5MTljNDE2YjljZTM2Y2MzZjM2NmE4NGQ4YmMz
MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiAKIHR5cGVk
ZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJbnNwZWN0b3JXb3JrZXJBZ2VudCA6IHB1
YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yV29ya2VyQWdlbnQ+IHsKK2NsYXNzIElu
c3BlY3RvcldvcmtlckFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JX
b3JrZXJBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6V29ya2VyQ29t
bWFuZEhhbmRsZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3Rvcldv
cmtlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKik7
CiAgICAgfkluc3BlY3RvcldvcmtlckFnZW50KCk7CkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoV29ya2VyQ29udGV4dFByb3h5Kik7
CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcgotICAgIHZv
aWQgc2V0V29ya2VySW5zcGVjdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIHZhbHVlKTsK
LSAgICB2b2lkIGNvbm5lY3RUb1dvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7Ci0g
ICAgdm9pZCBkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7
Ci0gICAgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklk
LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSk7Ci0gICAgdm9pZCBzZXRBdXRv
Y29ubmVjdFRvV29ya2VycyhFcnJvclN0cmluZyosIGJvb2wgdmFsdWUpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRXb3JrZXJJbnNwZWN0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgdmFsdWUp
OworICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29y
a2VySWQpOworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbVdvcmtlcihFcnJvclN0cmlu
ZyosIGludCB3b3JrZXJJZCk7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIo
RXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJy
b3JTdHJpbmcqLCBib29sIHZhbHVlKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JXb3JrZXJB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>