<?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>124211</bug_id>
          
          <creation_ts>2013-11-12 09:57:11 -0800</creation_ts>
          <short_desc>Web Inspector: Canvas: support editing WebGL shaders</short_desc>
          <delta_ts>2017-08-08 18:55:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>138593</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949721</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-12 09:57:11 -0800</bug_when>
    <thetext>For WebGL support we are likely going to show the shaders in the Resources sidebar. We should make them editable too.

See: https://hacks.mozilla.org/2013/11/live-editing-webgl-shaders-with-firefox-developer-tools/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949722</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-11-12 09:57:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/15448958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334949</commentid>
    <comment_count>2</comment_count>
      <attachid>317156</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-08-03 14:36:55 -0700</bug_when>
    <thetext>Created attachment 317156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335531</commentid>
    <comment_count>3</comment_count>
      <attachid>317301</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-08-04 15:26:26 -0700</bug_when>
    <thetext>Created attachment 317301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336645</commentid>
    <comment_count>4</comment_count>
      <attachid>317301</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-08-08 14:38:28 -0700</bug_when>
    <thetext>Comment on attachment 317301
Patch

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

&gt; LayoutTests/inspector/canvas/updateShader.html:31
&gt; +        description: &quot;Tests updating a program&apos;s vertex shader.&quot;,

Nit: &quot;Tests updating a program&apos;s vertex shader source.&quot;

&gt; LayoutTests/inspector/canvas/updateShader.html:45
&gt; +`;

Style: the trailing &quot;`;&quot; should start in the same column as &quot;const source =`&quot;.

&gt; LayoutTests/inspector/canvas/updateShader.html:53
&gt; +    suite.addTestCase({

These two test cases could share code, parameterized on shaderType.

&gt; LayoutTests/inspector/canvas/updateShader.html:152
&gt; +    suite.runTestCasesAndFinish();

It would be ideal if the tests could be written against the model/controller layer, instead of the protocol. Using ShaderProgram&apos;s update shader methods would exercise both the frontend and protocol. I can see why this might have been necessary, since ShaderProgram doesn&apos;t retain errors returned from CanvasAgent or expose them to the outside.

It might be worth looking into making a change to ShaderProgram, and adding an optional callback to the shader update methods to be notified of success/failure info. What do you think?

&gt; Source/WebCore/inspector/InspectorCanvasAgent.cpp:314
&gt; +        errorString = contextWebGL-&gt;getShaderInfoLog(shader);

Does it matter that we now have two paths for sending shader/linker errors to the frontend? Do they send identical data? Eventually we&apos;ll want to show errors inline, in the shader&apos;s TextEditor. Where would the error data be taken from to do this? The Console? The Canvas protocol?

&gt; Source/WebInspectorUI/ChangeLog:7
&gt; +        Reviewed by NOBODY (OOPS!).

This patch is introducing new UI, which warrants a brief summary.

&gt; Source/WebInspectorUI/UserInterface/Models/ShaderProgram.js:87
&gt; +            console.assert(!error, error);

Shouldn&apos;t we do something with errors, or lack there of? The program could track the result of the last operation, and invalidate it once another update is performed. Currently one has to toggle between the Console and Resources tab to see if the edits succeeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336651</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-08-08 14:45:12 -0700</bug_when>
    <thetext>Do you have a test for two shaders which both compile, but cannot be linked? An example of this is mismatched varying variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336727</commentid>
    <comment_count>6</comment_count>
      <attachid>317301</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-08-08 16:19:25 -0700</bug_when>
    <thetext>Comment on attachment 317301
Patch

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

&gt;&gt; LayoutTests/inspector/canvas/updateShader.html:45
&gt;&gt; +`;
&gt; 
&gt; Style: the trailing &quot;`;&quot; should start in the same column as &quot;const source =`&quot;.

If I indented the &quot;`;&quot; then there would be a lot of trailing whitespace other than just &quot;\n&quot; at the end of the source.  I would prefer to keep it where it is.

&gt;&gt; LayoutTests/inspector/canvas/updateShader.html:152
&gt;&gt; +    suite.runTestCasesAndFinish();
&gt; 
&gt; It would be ideal if the tests could be written against the model/controller layer, instead of the protocol. Using ShaderProgram&apos;s update shader methods would exercise both the frontend and protocol. I can see why this might have been necessary, since ShaderProgram doesn&apos;t retain errors returned from CanvasAgent or expose them to the outside.
&gt; 
&gt; It might be worth looking into making a change to ShaderProgram, and adding an optional callback to the shader update methods to be notified of success/failure info. What do you think?

I&apos;m not sure I like the idea of adding an optional since it won&apos;t be used in any case other than tests.  We follow this pattern of testing directly on the protocol in many other tests.

&gt;&gt; Source/WebCore/inspector/InspectorCanvasAgent.cpp:314
&gt;&gt; +        errorString = contextWebGL-&gt;getShaderInfoLog(shader);
&gt; 
&gt; Does it matter that we now have two paths for sending shader/linker errors to the frontend? Do they send identical data? Eventually we&apos;ll want to show errors inline, in the shader&apos;s TextEditor. Where would the error data be taken from to do this? The Console? The Canvas protocol?

I will just use the console to send errors.  Linking the error line/column to the TextEditor will come in a later patch.

&gt;&gt; Source/WebInspectorUI/ChangeLog:7
&gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; This patch is introducing new UI, which warrants a brief summary.

This patch doesn&apos;t actually introduce any new UI.  It just makes the existing shader TextEditors editable.  Also, I think the title is pretty self-explanatory.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/ShaderProgram.js:87
&gt;&gt; +            console.assert(!error, error);
&gt; 
&gt; Shouldn&apos;t we do something with errors, or lack there of? The program could track the result of the last operation, and invalidate it once another update is performed. Currently one has to toggle between the Console and Resources tab to see if the edits succeeded.

I will be adding inline errors in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336763</commentid>
    <comment_count>7</comment_count>
      <attachid>317649</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-08-08 16:46:46 -0700</bug_when>
    <thetext>Created attachment 317649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336771</commentid>
    <comment_count>8</comment_count>
      <attachid>317649</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-08-08 16:53:18 -0700</bug_when>
    <thetext>Comment on attachment 317649
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336812</commentid>
    <comment_count>9</comment_count>
      <attachid>317662</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-08-08 18:14:10 -0700</bug_when>
    <thetext>Created attachment 317662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336822</commentid>
    <comment_count>10</comment_count>
      <attachid>317662</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-08 18:55:57 -0700</bug_when>
    <thetext>Comment on attachment 317662
Patch

Clearing flags on attachment: 317662

Committed r220436: &lt;http://trac.webkit.org/changeset/220436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336823</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-08 18:55:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317156</attachid>
            <date>2017-08-03 14:36:55 -0700</date>
            <delta_ts>2017-08-04 15:26:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>124211.diff</filename>
            <type>text/plain</type>
            <size>19179</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YWQ4MDRhZWQ2MC4uZjAzYTQ4MTY0NTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0wOC0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlZGl0aW5nIFdlYkdMIHNoYWRlcnMgaW4gdGhlIFdlYiBJ
bnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU0NDg5NTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Vw
ZGF0ZVNoYWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52
YXMvdXBkYXRlU2hhZGVyLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA4LTAyICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc3RhY2sg
dHJhY2UgaW5mb3JtYXRpb24gZm9yIGVhY2ggUmVjb3JkaW5nQWN0aW9uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY2OGVhMGJlNGY0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAKK0NPTlNPTEUgTUVTU0FHRTogV2ViR0w6IEVSUk9S
OiAwOjE6ICdJTlZBTElEJyA6IHN5bnRheCBlcnJvcgorQ09OU09MRSBNRVNTQUdFOiBXZWJHTDog
RVJST1I6IDA6MTogJ0lOVkFMSUQnIDogc3ludGF4IGVycm9yCitUZXN0IGNvbXBpbGF0aW9uIG9m
IHNoYWRlcnMgYWZ0ZXIgYmVpbmcgYXR0YWNoZWQgdG8gYSBwcm9ncmFtLCB3aXRoIGFuZCB3aXRo
b3V0IHN5bnRheCBlcnJvcnMuCisKKworPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBDYW52YXMudXBk
YXRlU2hhZGVyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci52ZXJ0
ZXhTaGFkZXJWYWxpZAorCisgICAgdm9pZCBtYWluKHZvaWQpIHsKKyAgICAgICAgZ2xfUG9zaXRp
b24gPSB2ZWM0KDEsIDIsIDMsIDQpOworICAgIH0KKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
Q2FudmFzLnVwZGF0ZVNoYWRlci5mcmFnbWVudFNoYWRlclZhbGlkCisKKyAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMC4xLCAwLjIsIDAuMywgMC40KTsKKyAgICB9CisKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuaW52YWxpZFByb2dyYW1JZAorUEFTUzogU2hv
dWxkIHByb2R1Y2UgYW4gZXJyb3IuCitFcnJvcjogTm8gc2hhZGVyIHByb2dyYW0gZm9yIGdpdmVu
IGlkZW50aWZpZXIuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVy
LmludmFsaWRTaGFkZXJUeXBlCitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KK0Vycm9y
OiBObyBzaGFkZXIgZm9yIGdpdmVuIHR5cGUuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52
YXMudXBkYXRlU2hhZGVyLmludmFsaWRWZXJ0ZXhTaGFkZXJTb3VyY2UKK1BBU1M6IFNob3VsZCBw
cm9kdWNlIGVycm9yLgorRXJyb3I6IEVSUk9SOiAwOjE6ICdJTlZBTElEJyA6IHN5bnRheCBlcnJv
cgorCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLmludmFsaWRG
cmFnbWVudFNoYWRlclNvdXJjZQorUEFTUzogU2hvdWxkIHByb2R1Y2UgZXJyb3IuCitFcnJvcjog
RVJST1I6IDA6MTogJ0lOVkFMSUQnIDogc3ludGF4IGVycm9yCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjA5MDViMzQyNTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXIuaHRtbApAQCAtMCwwICsxLDE2MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYWRlci11dGlsaXRpZXMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBpZD0idmVydGV4LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorICAg
IHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAsIDAuMCwg
MC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnQtc2hhZGVy
IiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2FkKCkgeworICAgIHdpbmRvdy5jb250ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
Y2FudmFzIikuZ2V0Q29udGV4dCgid2ViZ2wiKTsKKyAgICB3aW5kb3cucHJvZ3JhbSA9IGNyZWF0
ZVNoYWRlclByb2dyYW0oInZlcnRleC1zaGFkZXIiLCAiZnJhZ21lbnQtc2hhZGVyIik7CisKKyAg
ICBydW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgbGV0IHN1aXRlID0gSW5z
cGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMudXBkYXRlU2hhZGVyIik7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVy
LnZlcnRleFNoYWRlclZhbGlkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0cyB1cGRhdGlu
ZyBhIHByb2dyYW0ncyB2ZXJ0ZXggc2hhZGVyLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVq
ZWN0KSB7CisgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IFdJLmNhbnZhc01hbmFnZXIu
c2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICBpZiAoIXNoYWRlclByb2dyYW0pIHsKKyAg
ICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hhZGVyIHByb2dyYW0iKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHByb2dyYW1J
ZCA9IHNoYWRlclByb2dyYW0uaWRlbnRpZmllcjsKKyAgICAgICAgICAgIGNvbnN0IHNoYWRlclR5
cGUgPSBDYW52YXNBZ2VudC5TaGFkZXJUeXBlLlZlcnRleDsKKyAgICAgICAgICAgIGNvbnN0IHNv
dXJjZSA9IGAKKyAgICB2b2lkIG1haW4odm9pZCkgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoMSwgMiwgMywgNCk7CisgICAgfQorYDsKKyAgICAgICAgICAgIENhbnZhc0FnZW50LnVwZGF0
ZVNoYWRlcihwcm9ncmFtSWQsIHNoYWRlclR5cGUsIHNvdXJjZSkKKyAgICAgICAgICAgIC50aGVu
KCgpID0+IENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2UocHJvZ3JhbUlkLCBzaGFkZXJU
eXBlKSkKKyAgICAgICAgICAgIC50aGVuKCh7Y29udGVudH0pID0+IEluc3BlY3RvclRlc3QubG9n
KGNvbnRlbnQpKQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQ2Fu
dmFzLnVwZGF0ZVNoYWRlci5mcmFnbWVudFNoYWRlclZhbGlkIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUZXN0cyB1cGRhdGluZyBhIHByb2dyYW0ncyBmcmFnbWVudCBzaGFkZXIuIiwKKyAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFt
ID0gV0kuY2FudmFzTWFuYWdlci5zaGFkZXJQcm9ncmFtc1swXTsKKyAgICAgICAgICAgIGlmICgh
c2hhZGVyUHJvZ3JhbSkgeworICAgICAgICAgICAgICAgIHJlamVjdCgiTWlzc2luZyBzaGFkZXIg
cHJvZ3JhbSIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBsZXQgcHJvZ3JhbUlkID0gc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyOworICAgICAg
ICAgICAgY29uc3Qgc2hhZGVyVHlwZSA9IENhbnZhc0FnZW50LlNoYWRlclR5cGUuRnJhZ21lbnQ7
CisgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBgCisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7CisKKyAgICB2b2lkIG1haW4odm9pZCkgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAuMSwgMC4yLCAwLjMsIDAuNCk7CisgICAgfQorYDsKKyAgICAgICAgICAgIENhbnZhc0FnZW50
LnVwZGF0ZVNoYWRlcihwcm9ncmFtSWQsIHNoYWRlclR5cGUsIHNvdXJjZSkKKyAgICAgICAgICAg
IC50aGVuKCgpID0+IENhbnZhc0FnZW50LnJlcXVlc3RTaGFkZXJTb3VyY2UocHJvZ3JhbUlkLCBz
aGFkZXJUeXBlKSkKKyAgICAgICAgICAgIC50aGVuKCh7Y29udGVudH0pID0+IEluc3BlY3RvclRl
c3QubG9nKGNvbnRlbnQpKQorICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgLy8gLS0tLS0tCisKKyAgICBzdWl0ZS5hZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLmludmFsaWRQcm9ncmFtSWQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkludmFsaWQgcHJvZ3JhbSBpZGVudGlmaWVycyBzaG91
bGQgY2F1c2UgYW4gZXJyb3IuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAg
ICAgICAgICAgIGNvbnN0IHByb2dyYW1JZCA9ICJJTlZBTElEX1BST0dSQU1fSUQiOworICAgICAg
ICAgICAgY29uc3Qgc2hhZGVyVHlwZSA9ICJJTlZBTElEX1NIQURFUl9UWVBFIjsKKyAgICAgICAg
ICAgIGNvbnN0IHNvdXJjZSA9ICJJTlZBTElEX1NPVVJDRSI7CisgICAgICAgICAgICBDYW52YXNB
Z2VudC51cGRhdGVTaGFkZXIocHJvZ3JhbUlkLCBzaGFkZXJUeXBlLCBzb3VyY2UsIChlcnJvcikg
PT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChlcnJvciwgIlNo
b3VsZCBwcm9kdWNlIGFuIGVycm9yLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJFcnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkU2hhZGVyVHlwZSIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiSW52YWxpZCBzaGFkZXIgdHlwZXMgc2hvdWxkIGNhdXNl
IGFuIGVycm9yLiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAg
ICBsZXQgc2hhZGVyUHJvZ3JhbSA9IFdJLmNhbnZhc01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07
CisgICAgICAgICAgICBpZiAoIXNoYWRlclByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICByZWpl
Y3QoIk1pc3Npbmcgc2hhZGVyIHByb2dyYW0iKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY29uc3Qgc2hhZGVyVHlwZSA9ICJJTlZBTElEX1NI
QURFUl9UWVBFIjsKKyAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9ICJJTlZBTElEX1NPVVJDRSI7
CisgICAgICAgICAgICBDYW52YXNBZ2VudC51cGRhdGVTaGFkZXIoc2hhZGVyUHJvZ3JhbS5pZGVu
dGlmaWVyLCBzaGFkZXJUeXBlLCBzb3VyY2UsIChlcnJvcikgPT4geworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChlcnJvciwgIlNob3VsZCBwcm9kdWNlIGFuIGVycm9y
LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFcnJvcjogIiArIGVycm9y
KTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQ2Fu
dmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkVmVydGV4U2hhZGVyU291cmNlIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJUZXN0cyB1cGRhdGluZyBhIHByb2dyYW0ncyB2ZXJ0ZXggc2hhZGVyLiIsCisg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgc2hhZGVyUHJv
Z3JhbSA9IFdJLmNhbnZhc01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICBp
ZiAoIXNoYWRlclByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hh
ZGVyIHByb2dyYW0iKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgY29uc3Qgc291cmNlID0gIklOVkFMSUQiOworICAgICAgICAgICAgQ2FudmFz
QWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgQ2FudmFzQWdlbnQu
U2hhZGVyVHlwZS5WZXJ0ZXgsIHNvdXJjZSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiU2hvdWxkIHByb2R1Y2UgZXJyb3IuIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVycm9yOiAiICsgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDYW52YXMu
dXBkYXRlU2hhZGVyLmludmFsaWRGcmFnbWVudFNoYWRlclNvdXJjZSIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiVGVzdHMgdXBkYXRpbmcgYSBwcm9ncmFtJ3MgZnJhZ21lbnQgc2hhZGVyLiIsCisg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgc2hhZGVyUHJv
Z3JhbSA9IFdJLmNhbnZhc01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICBp
ZiAoIXNoYWRlclByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hh
ZGVyIHByb2dyYW0iKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgY29uc3Qgc291cmNlID0gIklOVkFMSUQiOworICAgICAgICAgICAgQ2FudmFz
QWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgQ2FudmFzQWdlbnQu
U2hhZGVyVHlwZS5GcmFnbWVudCwgc291cmNlLCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgcHJvZHVjZSBlcnJvci4i
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRXJyb3I6ICIgKyBlcnJvcik7
CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWQoKSI+CisgICAgPHA+VGVzdCBjb21waWxh
dGlvbiBvZiBzaGFkZXJzIGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEgcHJvZ3JhbSwgd2l0aCBh
bmQgd2l0aG91dCBzeW50YXggZXJyb3JzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCmluZGV4IDRmMjYyZDgzZjQyLi42MGI0Y2RmMTRjYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgtMDMgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZWRp
dGluZyBXZWJHTCBzaGFkZXJzIGluIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQyMTEKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzE1NDQ4OTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uOgorICAgICAgICBBZGQg
YHVwZGF0ZVNoYWRlcmAgY29tbWFuZCB0aGF0IHdpbGwgY2hhbmdlIHRoZSBzb3VyY2Ugb2YgdGhl
IHNoYWRlciB3aXRoIHRoZSBpZGVudGlmaWVyCisgICAgICAgIGFuZCB0eXBlIHRvIHRoZSBnaXZl
biBzdHJpbmcsIGNvbXBpbGUgaXQsIGFuZCByZS1saW5rIHRoZSBhc3NvY2lhdGVkIHByb2dyYW0g
aWYgdGhlcmUgd2VyZQorICAgICAgICBubyBjb21waWxlIGVycm9ycy4KKwogMjAxNy0wOC0wMiAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogYWRkIHN0YWNrIHRyYWNlIGluZm9ybWF0aW9uIGZvciBlYWNoIFJlY29yZGluZ0FjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52
YXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb24KaW5kZXggZTU3NzdmNGNjOTcuLjA0OWU0Y2YyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KQEAgLTE1OCw2
ICsxNTgsMTUgQEAKICAgICAgICAgICAgICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIgfQogICAgICAgICAgICAgXQorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJ1cGRhdGVTaGFkZXIiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBpbGVzIGFuZCBsaW5rcyB0aGUgc2hhZGVy
IHdpdGggaWRlbnRpZmllciBhbmQgdHlwZSB3aXRoIHRoZSBnaXZlbiBzb3VyY2UgY29kZS4iLAor
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJw
cm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzaGFkZXJUeXBlIiwgIiRyZWYiOiAiU2hhZGVyVHlwZSIgfSwKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInNvdXJjZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgXQog
ICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ3ZjcwODFi
MjZiLi40ZjUyZDg5OWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA4LTAz
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzdXBwb3J0IGVkaXRpbmcgV2ViR0wgc2hhZGVycyBpbiB0aGUgV2ViIEluc3BlY3Rvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTQ0ODk1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcik6CisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdpdGhvdXRJbmNyZW1l
bnQpOgorICAgICAgICBTZXBhcmF0ZSBsb2dpYyBmb3IgbGlua1Byb2dyYW0gdG8gYWxsb3cgYSBw
cm9ncmFtIHRvIGJlIGxpbmtlZCB3aXRob3V0IGludmFsaWRhdGluZyBhbnkKKyAgICAgICAgY2Fj
aGVkIGF0dHJpYnV0ZSBsb2NhdGlvbnMuCisKIDIwMTctMDgtMDIgIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBzdGFjayB0cmFj
ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBSZWNvcmRpbmdBY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggYTE0OTM5ZmY2ZmUuLmRmYTk4OWYyNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMjg0MSwx
OSArMjg0MSwyOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmVXaWR0aChH
QzNEZmxvYXQgd2lkdGgpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1By
b2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogeworICAgIGlmICghbGlua1Byb2dyYW1XaXRo
b3V0SW5jcmVtZW50KHByb2dyYW0pKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9ncmFtLT5p
bmNyZWFzZUxpbmtDb3VudCgpOworCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
aW5rUHJvZ3JhbSgqdGhpcywgKnByb2dyYW0pOworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91dEluY3JlbWVudChXZWJHTFByb2dyYW0qIHByb2dy
YW0pCit7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJH
TE9iamVjdCgibGlua1Byb2dyYW0iLCBwcm9ncmFtKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBXZWJHTFNoYWRlciogdmVydGV4U2hhZGVyID0gcHJvZ3Jh
bS0+Z2V0QXR0YWNoZWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVIpOwog
ICAgIFdlYkdMU2hhZGVyKiBmcmFnbWVudFNoYWRlciA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hh
ZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIpOwogICAgIGlmICghdmVydGV4
U2hhZGVyIHx8ICF2ZXJ0ZXhTaGFkZXItPmlzVmFsaWQoKSB8fCAhZnJhZ21lbnRTaGFkZXIgfHwg
IWZyYWdtZW50U2hhZGVyLT5pc1ZhbGlkKCkgfHwgIW1fY29udGV4dC0+cHJlY2lzaW9uc01hdGNo
KG9iamVjdE9yWmVybyh2ZXJ0ZXhTaGFkZXIpLCBvYmplY3RPclplcm8oZnJhZ21lbnRTaGFkZXIp
KSB8fCAhbV9jb250ZXh0LT5jaGVja1ZhcnlpbmdzUGFja2luZyhvYmplY3RPclplcm8odmVydGV4
U2hhZGVyKSwgb2JqZWN0T3JaZXJvKGZyYWdtZW50U2hhZGVyKSkpIHsKICAgICAgICAgcHJvZ3Jh
bS0+c2V0TGlua1N0YXR1cyhmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAogICAgIG1fY29udGV4dC0+bGlua1Byb2dyYW0ob2JqZWN0T3JaZXJv
KHByb2dyYW0pKTsKLSAgICBwcm9ncmFtLT5pbmNyZWFzZUxpbmtDb3VudCgpOwotCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMaW5rUHJvZ3JhbSgqdGhpcywgKnByb2dyYW0pOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnBp
eGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IDcwZjc2Y2U5ZGI0Li5jOGZmZjU5ODVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMjI4LDYgKzIyOCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7CiAgICAgdm9pZCBs
aW5rUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKKyAgICBib29sIGxpbmtQcm9ncmFtV2l0aG91dElu
Y3JlbWVudChXZWJHTFByb2dyYW0qKTsKICAgICB2b2lkIHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50IHBhcmFtKTsKICAgICB2b2lkIHBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZh
Y3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKICAgICB2b2lkIHJlYWRQaXhlbHMoR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcmIHBpeGVscyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBmZjk0
Y2RkZmFkMC4uOTFkZmUyYTZjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtNTc3LDYgKzU3NywzMCBAQCB2b2lkIEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0U2hhZGVyU291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgUwogICAgICpjb250ZW50ID0gc2hhZGVyLT5nZXRTb3VyY2UoKTsKIH0KIAor
dm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6dXBkYXRlU2hhZGVyKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBwcm9ncmFtSWQsIGNvbnN0IFN0cmluZyYgc2hhZGVyVHlw
ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UpCit7CisgICAgYXV0byogaW5zcGVjdG9yUHJvZ3JhbSA9
IGFzc2VydEluc3BlY3RvclByb2dyYW0oZXJyb3JTdHJpbmcsIHByb2dyYW1JZCk7CisgICAgaWYg
KCFpbnNwZWN0b3JQcm9ncmFtKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzaGFkZXIg
PSBpbnNwZWN0b3JQcm9ncmFtLT5zaGFkZXJGb3JUeXBlKHNoYWRlclR5cGUpOworICAgIGlmICgh
c2hhZGVyKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBzaGFkZXIg
Zm9yIGdpdmVuIHR5cGUuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0V2ViR0wgPSBpbnNwZWN0b3JQcm9ncmFtLT5jb250
ZXh0KCk7CisgICAgY29udGV4dFdlYkdMLT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UpOwor
ICAgIGNvbnRleHRXZWJHTC0+Y29tcGlsZVNoYWRlcihzaGFkZXIpOworCisgICAgaWYgKCFzaGFk
ZXItPmlzVmFsaWQoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9IGNvbnRleHRXZWJHTC0+Z2V0
U2hhZGVySW5mb0xvZyhzaGFkZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29u
dGV4dFdlYkdMLT5saW5rUHJvZ3JhbVdpdGhvdXRJbmNyZW1lbnQoJmluc3BlY3RvclByb2dyYW0t
PnByb2dyYW0oKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0Rlc3Ry
b3llZFRpbWVyRmlyZWQoKQogewogICAgIGlmICghbV9yZW1vdmVkQ2FudmFzSWRlbnRpZmllcnMu
c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaAppbmRleCA5MjZhMTVmNTMxYi4uMGFmYTU0ZjQxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03Niw2ICs3Niw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGdldFByb2dyYW1JbmZvTG9nKEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6SW5mb0xvZz4mKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFNoYWRlckluZm9Mb2coRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpJ
bmZvTG9nPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFNoYWRlclNvdXJjZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25zdCBTdHJpbmcmIHNoYWRlclR5cGUs
IFN0cmluZyopIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2hhZGVyKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwcm9ncmFtSWQsIGNvbnN0IFN0cmluZyYgc2hhZGVyVHlwZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKaW5kZXggZDlkZTgwYmQyYzUuLjg4YWU2ZTZkYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wOC0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlZGl0aW5nIFdlYkdM
IHNoYWRlcnMgaW4gdGhlIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU0
NDg5NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzOgorICAgICAgICAoV0kuU2hh
ZGVyUHJvZ3JhbS5wcm90b3R5cGUudXBkYXRlVmVydGV4U2hhZGVyKToKKyAgICAgICAgKFdJLlNo
YWRlclByb2dyYW0ucHJvdG90eXBlLnVwZGF0ZUZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKFdJ
LlNoYWRlclByb2dyYW0ucHJvdG90eXBlLl91cGRhdGVTaGFkZXIpOgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
SS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuU2hhZGVyUHJvZ3JhbUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZENoYW5nZSk6CisKIDIwMTctMDgtMDIgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGFkZCBzdGFjayB0cmFjZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBSZWNvcmRpbmdBY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TaGFk
ZXJQcm9ncmFtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NoYWRlclByb2dyYW0uanMKaW5kZXggMGRjMmY4YWE5MDUuLjVlNDcyOTU2MmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVyUHJv
Z3JhbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U2hhZGVyUHJvZ3JhbS5qcwpAQCAtNzcsNiArNzcsMTYgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9IGNs
YXNzIFNoYWRlclByb2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcmVxdWVz
dFNoYWRlclNvdXJjZShDYW52YXNBZ2VudC5TaGFkZXJUeXBlLkZyYWdtZW50LCBjYWxsYmFjayk7
CiAgICAgfQogCisgICAgdXBkYXRlVmVydGV4U2hhZGVyKHNvdXJjZSwgY2FsbGJhY2spCisgICAg
eworICAgICAgICB0aGlzLl91cGRhdGVTaGFkZXIoQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5WZXJ0
ZXgsIHNvdXJjZSwgY2FsbGJhY2spOworICAgIH0KKworICAgIHVwZGF0ZUZyYWdtZW50U2hhZGVy
KHNvdXJjZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl91cGRhdGVTaGFkZXIoQ2Fu
dmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFnbWVudCwgc291cmNlLCBjYWxsYmFjayk7CisgICAgfQor
CiAgICAgZ2V0SW5mb0xvZyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pc0N1
cnJlbnQpIHsKQEAgLTE2NCw2ICsxNzQsMTEgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9IGNsYXNzIFNo
YWRlclByb2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfSk7CiAgICAgfQogCisgICAg
X3VwZGF0ZVNoYWRlcihzaGFkZXJUeXBlLCBzb3VyY2UsIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHRoaXMuX2lkZW50aWZpZXIsIHNoYWRlclR5cGUs
IHNvdXJjZSwgY2FsbGJhY2spOworICAgIH0KKwogICAgIF9nZXRDYWNoZWRTaGFkZXJJbmZvKHNo
YWRlclR5cGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NoYWRlckluZm9DYWNoZS5oYXMo
c2hhZGVyVHlwZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcwpp
bmRleCBmOGU4MDM5MjAwYS4uM2EzMjdkZmMyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9n
cmFtQ29udGVudFZpZXcuanMKQEAgLTM1LDggKzM1LDEwIEBAIFdJLlNoYWRlclByb2dyYW1Db250
ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWCiAKICAgICAgICAgbGV0IGNyZWF0ZUVkaXRvciA9IChzaGFkZXJUeXBlKSA9PiB7CiAgICAg
ICAgICAgICBsZXQgdGV4dEVkaXRvciA9IG5ldyBXSS5UZXh0RWRpdG9yOworICAgICAgICAgICAg
dGV4dEVkaXRvci5yZWFkT25seSA9IGZhbHNlOwogICAgICAgICAgICAgdGV4dEVkaXRvci5hZGRF
dmVudExpc3RlbmVyKFdJLlRleHRFZGl0b3IuRXZlbnQuRm9jdXNlZCwgdGhpcy5fZWRpdG9yRm9j
dXNlZCwgdGhpcyk7CiAgICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0ku
VGV4dEVkaXRvci5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251
bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICB0ZXh0RWRp
dG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5Db250ZW50RGlkQ2hhbmdl
LCB0aGlzLmRlYm91bmNlKDI1MCkuX2NvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICAg
ICAgdGV4dEVkaXRvci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNoYWRlciIpOwogCiAgICAgICAg
ICAgICBsZXQgc2hhZGVyVHlwZUNvbnRhaW5lciA9IHRleHRFZGl0b3IuZWxlbWVudC5pbnNlcnRB
ZGphY2VudEVsZW1lbnQoImFmdGVyYmVnaW4iLCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KSk7CkBAIC0xOTYsNCArMTk4LDEyIEBAIFdJLlNoYWRlclByb2dyYW1Db250ZW50VmlldyA9IGNs
YXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAgICAgewog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVu
dC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UpOwogICAgIH0KKworICAgIF9jb250ZW50
RGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhp
cy5fdmVydGV4RWRpdG9yKQorICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC51cGRh
dGVWZXJ0ZXhTaGFkZXIodGhpcy5fdmVydGV4RWRpdG9yLnN0cmluZyk7CisgICAgICAgIGVsc2Ug
aWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZnJhZ21lbnRFZGl0b3IpCisgICAgICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVwZGF0ZUZyYWdtZW50U2hhZGVyKHRoaXMuX2ZyYWdtZW50
RWRpdG9yLnN0cmluZyk7CisgICAgfQogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317301</attachid>
            <date>2017-08-04 15:26:26 -0700</date>
            <delta_ts>2017-08-08 16:46:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>124211.diff</filename>
            <type>text/plain</type>
            <size>21040</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWE5NGZmM2IwZi4uODgwOGM1NTU2MDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOCBAQAog
MjAxNy0wOC0wNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlZGl0aW5nIFdlYkdMIHNoYWRlcnMgaW4gdGhlIFdlYiBJ
bnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU0NDg5NTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3Vw
ZGF0ZVNoYWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52
YXMvdXBkYXRlU2hhZGVyLmh0bWw6IEFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnM6CisKKzIwMTctMDgtMDQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBzb3VyY2UgdmlldyBmb3IgV2Vi
R0wgc2hhZGVyIHByb2dyYW1zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzg1OTMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4OTM2MTk0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NjhlYTBiZTRm
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRl
U2hhZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQwIEBACitDT05TT0xFIE1FU1NBR0U6IFdl
YkdMOiBFUlJPUjogMDoxOiAnSU5WQUxJRCcgOiBzeW50YXggZXJyb3IKK0NPTlNPTEUgTUVTU0FH
RTogV2ViR0w6IEVSUk9SOiAwOjE6ICdJTlZBTElEJyA6IHN5bnRheCBlcnJvcgorVGVzdCBjb21w
aWxhdGlvbiBvZiBzaGFkZXJzIGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEgcHJvZ3JhbSwgd2l0
aCBhbmQgd2l0aG91dCBzeW50YXggZXJyb3JzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
Q2FudmFzLnVwZGF0ZVNoYWRlcgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVT
aGFkZXIudmVydGV4U2hhZGVyVmFsaWQKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAg
IGdsX1Bvc2l0aW9uID0gdmVjNCgxLCAyLCAzLCA0KTsKKyAgICB9CisKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuZnJhZ21lbnRTaGFkZXJWYWxpZAorCisgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICB2b2lkIG1haW4odm9pZCkgeworICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMSwgMC4yLCAwLjMsIDAuNCk7CisgICAgfQorCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLmludmFsaWRQcm9ncmFtSWQK
K1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgorRXJyb3I6IE5vIHNoYWRlciBwcm9ncmFt
IGZvciBnaXZlbiBpZGVudGlmaWVyLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVw
ZGF0ZVNoYWRlci5pbnZhbGlkU2hhZGVyVHlwZQorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJy
b3IuCitFcnJvcjogTm8gc2hhZGVyIGZvciBnaXZlbiB0eXBlLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkVmVydGV4U2hhZGVyU291cmNlCitQQVNT
OiBTaG91bGQgcHJvZHVjZSBlcnJvci4KK0Vycm9yOiBFUlJPUjogMDoxOiAnSU5WQUxJRCcgOiBz
eW50YXggZXJyb3IKKworCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRl
ci5pbnZhbGlkRnJhZ21lbnRTaGFkZXJTb3VyY2UKK1BBU1M6IFNob3VsZCBwcm9kdWNlIGVycm9y
LgorRXJyb3I6IEVSUk9SOiAwOjE6ICdJTlZBTElEJyA6IHN5bnRheCBlcnJvcgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZWEzOTY1NmFmYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwKQEAgLTAs
MCArMSwxNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2ZXJ0ZXgtc2hhZGVyIiB0eXBlPSJ4LXNoYWRl
ci94LXZlcnRleCI+CisgICAgdm9pZCBtYWluKHZvaWQpIHsKKyAgICAgICAgZ2xfUG9zaXRpb24g
PSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlk
PSJmcmFnbWVudC1zaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OworCisgICAgdm9pZCBtYWluKHZvaWQpIHsKKyAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWQoKSB7CisgICAgY3JlYXRlUHJvZ3JhbSgid2ViZ2wiKTsK
KyAgICBsaW5rUHJvZ3JhbSgidmVydGV4LXNoYWRlciIsICJmcmFnbWVudC1zaGFkZXIiKTsKKwor
ICAgIHJ1blRlc3QoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkNhbnZhcy51cGRhdGVTaGFkZXIiKTsKKwor
ICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFk
ZXIudmVydGV4U2hhZGVyVmFsaWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3RzIHVwZGF0
aW5nIGEgcHJvZ3JhbSdzIHZlcnRleCBzaGFkZXIuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgIGxldCBzaGFkZXJQcm9ncmFtID0gV0kuY2FudmFzTWFuYWdl
ci5zaGFkZXJQcm9ncmFtc1swXTsKKyAgICAgICAgICAgIGlmICghc2hhZGVyUHJvZ3JhbSkgewor
ICAgICAgICAgICAgICAgIHJlamVjdCgiTWlzc2luZyBzaGFkZXIgcHJvZ3JhbSIpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcHJvZ3Jh
bUlkID0gc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyOworICAgICAgICAgICAgY29uc3Qgc2hhZGVy
VHlwZSA9IENhbnZhc0FnZW50LlNoYWRlclR5cGUuVmVydGV4OworICAgICAgICAgICAgY29uc3Qg
c291cmNlID0gYAorICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX1Bvc2l0aW9uID0g
dmVjNCgxLCAyLCAzLCA0KTsKKyAgICB9CitgOworICAgICAgICAgICAgQ2FudmFzQWdlbnQudXBk
YXRlU2hhZGVyKHByb2dyYW1JZCwgc2hhZGVyVHlwZSwgc291cmNlKQorICAgICAgICAgICAgLnRo
ZW4oKCkgPT4gQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShwcm9ncmFtSWQsIHNoYWRl
clR5cGUpKQorICAgICAgICAgICAgLnRoZW4oKHtjb250ZW50fSkgPT4gSW5zcGVjdG9yVGVzdC5s
b2coY29udGVudCkpCisgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJD
YW52YXMudXBkYXRlU2hhZGVyLmZyYWdtZW50U2hhZGVyVmFsaWQiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlRlc3RzIHVwZGF0aW5nIGEgcHJvZ3JhbSdzIGZyYWdtZW50IHNoYWRlci4iLAorICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IHNoYWRlclByb2dy
YW0gPSBXSS5jYW52YXNNYW5hZ2VyLnNoYWRlclByb2dyYW1zWzBdOworICAgICAgICAgICAgaWYg
KCFzaGFkZXJQcm9ncmFtKSB7CisgICAgICAgICAgICAgICAgcmVqZWN0KCJNaXNzaW5nIHNoYWRl
ciBwcm9ncmFtIikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGxldCBwcm9ncmFtSWQgPSBzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXI7CisgICAg
ICAgICAgICBjb25zdCBzaGFkZXJUeXBlID0gQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFnbWVu
dDsKKyAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGAKKyAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMC4xLCAwLjIsIDAuMywgMC40KTsKKyAgICB9CitgOworICAgICAgICAgICAgQ2FudmFzQWdl
bnQudXBkYXRlU2hhZGVyKHByb2dyYW1JZCwgc2hhZGVyVHlwZSwgc291cmNlKQorICAgICAgICAg
ICAgLnRoZW4oKCkgPT4gQ2FudmFzQWdlbnQucmVxdWVzdFNoYWRlclNvdXJjZShwcm9ncmFtSWQs
IHNoYWRlclR5cGUpKQorICAgICAgICAgICAgLnRoZW4oKHtjb250ZW50fSkgPT4gSW5zcGVjdG9y
VGVzdC5sb2coY29udGVudCkpCisgICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLmludmFsaWRQcm9ncmFtSWQiLAorICAgICAgICBkZXNj
cmlwdGlvbjogIkludmFsaWQgcHJvZ3JhbSBpZGVudGlmaWVycyBzaG91bGQgY2F1c2UgYW4gZXJy
b3IuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGNvbnN0
IHByb2dyYW1JZCA9ICJJTlZBTElEX1BST0dSQU1fSUQiOworICAgICAgICAgICAgY29uc3Qgc2hh
ZGVyVHlwZSA9ICJJTlZBTElEX1NIQURFUl9UWVBFIjsKKyAgICAgICAgICAgIGNvbnN0IHNvdXJj
ZSA9ICJJTlZBTElEX1NPVVJDRSI7CisgICAgICAgICAgICBDYW52YXNBZ2VudC51cGRhdGVTaGFk
ZXIocHJvZ3JhbUlkLCBzaGFkZXJUeXBlLCBzb3VyY2UsIChlcnJvcikgPT4geworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChlcnJvciwgIlNob3VsZCBwcm9kdWNlIGFu
IGVycm9yLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFcnJvcjogIiAr
IGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkU2hhZGVyVHlwZSIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiSW52YWxpZCBzaGFkZXIgdHlwZXMgc2hvdWxkIGNhdXNlIGFuIGVycm9yLiIsCisg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgc2hhZGVyUHJv
Z3JhbSA9IFdJLmNhbnZhc01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICBp
ZiAoIXNoYWRlclByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hh
ZGVyIHByb2dyYW0iKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgY29uc3Qgc2hhZGVyVHlwZSA9ICJJTlZBTElEX1NIQURFUl9UWVBFIjsKKyAg
ICAgICAgICAgIGNvbnN0IHNvdXJjZSA9ICJJTlZBTElEX1NPVVJDRSI7CisgICAgICAgICAgICBD
YW52YXNBZ2VudC51cGRhdGVTaGFkZXIoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBzaGFkZXJU
eXBlLCBzb3VyY2UsIChlcnJvcikgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0VGhhdChlcnJvciwgIlNob3VsZCBwcm9kdWNlIGFuIGVycm9yLiIpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFcnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRl
ci5pbnZhbGlkVmVydGV4U2hhZGVyU291cmNlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0
cyB1cGRhdGluZyBhIHByb2dyYW0ncyB2ZXJ0ZXggc2hhZGVyLiIsCisgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IFdJLmNhbnZh
c01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICBpZiAoIXNoYWRlclByb2dy
YW0pIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hhZGVyIHByb2dyYW0iKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3Qgc291cmNlID0gIklOVkFMSUQiOworICAgICAgICAgICAgQ2FudmFzQWdlbnQudXBkYXRlU2hh
ZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5WZXJ0
ZXgsIHNvdXJjZSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KGVycm9yLCAiU2hvdWxkIHByb2R1Y2UgZXJyb3IuIik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLmlu
dmFsaWRGcmFnbWVudFNoYWRlclNvdXJjZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdHMg
dXBkYXRpbmcgYSBwcm9ncmFtJ3MgZnJhZ21lbnQgc2hhZGVyLiIsCisgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IFdJLmNhbnZh
c01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICBpZiAoIXNoYWRlclByb2dy
YW0pIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hhZGVyIHByb2dyYW0iKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3Qgc291cmNlID0gIklOVkFMSUQiOworICAgICAgICAgICAgQ2FudmFzQWdlbnQudXBkYXRlU2hh
ZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFn
bWVudCwgc291cmNlLCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgcHJvZHVjZSBlcnJvci4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9ImxvYWQoKSI+CisgICAgPHA+VGVzdCBjb21waWxhdGlvbiBvZiBzaGFkZXJz
IGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEgcHJvZ3JhbSwgd2l0aCBhbmQgd2l0aG91dCBzeW50
YXggZXJyb3JzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGU2NWZlOTExZjEuLjgxZTI1YWNlYjg3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTkxNiw2ICsxOTE2LDcg
QEAgaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZlQ2FudmFzQ29udGV4dC13ZWJnbC5odG1sIFsgU2tp
cCBdCiBpbnNwZWN0b3IvY2FudmFzL3Jlc29sdmVDYW52YXNDb250ZXh0LXdlYmdsMi5odG1sIFsg
U2tpcCBdCiBpbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJnbC5o
dG1sIFsgU2tpcCBdCiBpbnNwZWN0b3IvY2FudmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13
ZWJnbDIuaHRtbCBbIFNraXAgXQoraW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXIuaHRtbCBb
IFNraXAgXQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMjIyMjIyMjICAgICAg
ICAgIEVuZCBXZWJHTCBJc3N1ZXMgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggY2Nk
ODRlYWY4MjkuLmJmOGRmNjE4ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwxOCBAQAogMjAxNy0wOC0wNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
KyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlZGl0aW5nIFdlYkdMIHNoYWRlcnMgaW4g
dGhlIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNDIxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU0NDg5NTg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cHJvdG9jb2wvQ2FudmFzLmpzb246CisgICAgICAgIEFkZCBgdXBkYXRlU2hhZGVyYCBjb21tYW5k
IHRoYXQgd2lsbCBjaGFuZ2UgdGhlIGdpdmVuIHNoYWRlcidzIHNvdXJjZSB0byB0aGUgcHJvdmlk
ZWQgc3RyaW5nLAorICAgICAgICByZWNvbXBpbGUsIGFuZCByZWxpbmsgaXQgdG8gaXRzIGFzc29j
aWF0ZWQgcHJvZ3JhbS4KKyAgICAgICAgRHJpdmUtYnk6IGFkZCBkZXNjcmlwdGlvbiB0byBgcmVx
dWVzdFNoYWRlclNvdXJjZWAgY29tbWFuZC4KKworMjAxNy0wOC0wNCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIHNvdXJjZSB2
aWV3IGZvciBXZWJHTCBzaGFkZXIgcHJvZ3JhbXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU5MwogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTg5
MzYxOTQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3Rv
Y29sL0NhbnZhcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9DYW52YXMuanNvbgppbmRleCBiY2NmM2ZjNzhlMi4uYjAxYjgzMzE4MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbgpA
QCAtMTIyLDcgKzEyMiw3IEBACiAgICAgICAgIH0sCiAgICAgICAgIHsKICAgICAgICAgICAgICJu
YW1lIjogInJlcXVlc3RTaGFkZXJTb3VyY2UiLAotICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IiIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhlIHNvdXJjZSBvZiB0
aGUgc2hhZGVyIG9mIHRoZSBnaXZlbiB0eXBlIGZyb20gdGhlIHByb2dyYW0gd2l0aCB0aGUgZ2l2
ZW4gaWQuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAogICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVmIjogIlNoYWRlclR5cGUiIH0KQEAgLTEz
MCw2ICsxMzAsMTUgQEAKICAgICAgICAgICAgICJyZXR1cm5zIjogWwogICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogInN0cmluZyIgfQogICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJ1cGRhdGVTaGFkZXIi
LAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbXBpbGVzIGFuZCBsaW5rcyB0aGUgc2hh
ZGVyIHdpdGggaWRlbnRpZmllciBhbmQgdHlwZSB3aXRoIHRoZSBnaXZlbiBzb3VyY2UgY29kZS4i
LAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJwcm9ncmFtSWQiLCAiJHJlZiI6ICJQcm9ncmFtSWQiIH0sCisgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzaGFkZXJUeXBlIiwgIiRyZWYiOiAiU2hhZGVyVHlwZSIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInNvdXJjZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAg
XQogICAgICAgICB9CiAgICAgXSwKICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFlM2Q1
NWIxODhmLi5mZjM3MTNjMThlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI5IEBACiAyMDE3LTA4
LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAorICAgICAgICBXZWIgSW5z
cGVjdG9yOiBzdXBwb3J0IGVkaXRpbmcgV2ViR0wgc2hhZGVycyBpbiB0aGUgV2ViIEluc3BlY3Rv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjEx
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTQ0ODk1OD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0
ZVNoYWRlci5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcik6CisKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdpdGhvdXRJbnZh
bGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMpOgorICAgICAgICBOb3JtYWxseSwgd2hlbiBhIHByb2dy
YW0gaXMgbGlua2VkLCBpdCBpbnZhbGlkYXRlcyBhbnkgV2ViR0xVbmlmb3JtTG9jYXRpb24gYXNz
b2NpYXRlZCB3aXRoCisgICAgICAgIHRoZSBwcm9ncmFtIGJ5IGluY3JlbWVudGluZyBpdHMgYGxp
bmtDb3VudGAuIEluIG9yZGVyIHRvIGFsbG93IGxpdmUgZWRpdGluZyBvZiBzaGFkZXJzLCB3ZQor
ICAgICAgICBuZWVkIHRvIGJlIGFibGUgdG8gY29tcGlsZSBhbmQgbGluayBhIHNoYWRlciB3aXRo
b3V0IGludmFsaWRhdGluZyB0aGVzZSBsb2NhdGlvbnMuIFRoaXMKKyAgICAgICAgcGF0Y2ggbW92
ZXMgdGhlIHNoYWRlciBsaW5raW5nIGxvZ2ljIHRvIGl0cyBvd24gZnVuY3Rpb24gdGhhdCBpcyBj
YWxsZWQgYnkgYGxpbmtQcm9ncmFtYCBzbworICAgICAgICB0aGF0IEluc3BlY3RvckNhbnZhc0Fn
ZW50IGNhbiBjb21waWxlIGFuZCBsaW5rIHdpdGhvdXQgaW52YWxpZGF0aW9uLgorCisyMDE3LTA4
LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBhZGQgc291cmNlIHZpZXcgZm9yIFdlYkdMIHNoYWRlciBwcm9ncmFtcwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTkzCiAgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xODkzNjE5ND4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMGZjNzFlMjdl
MGQuLjE2OTY0MjgwMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMjgzNiwxNyArMjgzNiwyNiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmVXaWR0aChHQzNEZmxvYXQgd2lk
dGgpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bGlua1Byb2dyYW0oV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtKQogeworICAgIGlmICghbGlua1Byb2dyYW1XaXRob3V0SW52YWxpZGF0
aW5nQXR0cmliTG9jYXRpb25zKHByb2dyYW0pKQorICAgICAgICByZXR1cm47CisKKyAgICBwcm9n
cmFtLT5pbmNyZWFzZUxpbmtDb3VudCgpOworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91dEludmFsaWRhdGluZ0F0dHJpYkxvY2F0aW9ucyhXZWJH
TFByb2dyYW0qIHByb2dyYW0pCit7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8
fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgibGlua1Byb2dyYW0iLCBwcm9ncmFtKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBXZWJHTFNoYWRlciogdmVydGV4
U2hhZGVyID0gcHJvZ3JhbS0+Z2V0QXR0YWNoZWRTaGFkZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlZF
UlRFWF9TSEFERVIpOwogICAgIFdlYkdMU2hhZGVyKiBmcmFnbWVudFNoYWRlciA9IHByb2dyYW0t
PmdldEF0dGFjaGVkU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFHTUVOVF9TSEFERVIpOwog
ICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICF2ZXJ0ZXhTaGFkZXItPmlzVmFsaWQoKSB8fCAhZnJh
Z21lbnRTaGFkZXIgfHwgIWZyYWdtZW50U2hhZGVyLT5pc1ZhbGlkKCkgfHwgIW1fY29udGV4dC0+
cHJlY2lzaW9uc01hdGNoKG9iamVjdE9yWmVybyh2ZXJ0ZXhTaGFkZXIpLCBvYmplY3RPclplcm8o
ZnJhZ21lbnRTaGFkZXIpKSB8fCAhbV9jb250ZXh0LT5jaGVja1ZhcnlpbmdzUGFja2luZyhvYmpl
Y3RPclplcm8odmVydGV4U2hhZGVyKSwgb2JqZWN0T3JaZXJvKGZyYWdtZW50U2hhZGVyKSkpIHsK
ICAgICAgICAgcHJvZ3JhbS0+c2V0TGlua1N0YXR1cyhmYWxzZSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIG1fY29udGV4dC0+bGlua1Byb2dy
YW0ob2JqZWN0T3JaZXJvKHByb2dyYW0pKTsKLSAgICBwcm9ncmFtLT5pbmNyZWFzZUxpbmtDb3Vu
dCgpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
CmluZGV4IDcwZjc2Y2U5ZGI0Li4yYjEzNGMyMmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMjI4LDYg
KzIyOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGluZVdpZHRoKEdDM0RmbG9hdCk7CiAgICAg
dm9pZCBsaW5rUHJvZ3JhbShXZWJHTFByb2dyYW0qKTsKKyAgICBib29sIGxpbmtQcm9ncmFtV2l0
aG91dEludmFsaWRhdGluZ0F0dHJpYkxvY2F0aW9ucyhXZWJHTFByb2dyYW0qKTsKICAgICB2b2lk
IHBpeGVsU3RvcmVpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKICAgICB2b2lkIHBv
bHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0MzRGZsb2F0IHVuaXRzKTsKICAgICB2b2lk
IHJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZp
ZXcmIHBpeGVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcAppbmRleCAyNmVmNzgyNGZhYS4uYTNiNGU1ZDIwZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtMjkz
LDYgKzI5MywzNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZXF1ZXN0U2hhZGVyU291
cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUwogI2VuZGlmCiB9CiAKK3ZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25zdCBTdHJpbmcmIHNoYWRlclR5cGUsIGNv
bnN0IFN0cmluZyYgc291cmNlKQoreworI2lmIEVOQUJMRShXRUJHTCkKKyAgICBhdXRvKiBpbnNw
ZWN0b3JQcm9ncmFtID0gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShlcnJvclN0cmluZywgcHJvZ3Jh
bUlkKTsKKyAgICBpZiAoIWluc3BlY3RvclByb2dyYW0pCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHNoYWRlciA9IGluc3BlY3RvclByb2dyYW0tPnNoYWRlckZvclR5cGUoc2hhZGVyVHlw
ZSk7CisgICAgaWYgKCFzaGFkZXIpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIk5vIHNoYWRlciBmb3IgZ2l2ZW4gdHlwZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHRXZWJHTCA9IGluc3BlY3Rv
clByb2dyYW0tPmNvbnRleHQoKTsKKyAgICBjb250ZXh0V2ViR0wtPnNoYWRlclNvdXJjZShzaGFk
ZXIsIHNvdXJjZSk7CisgICAgY29udGV4dFdlYkdMLT5jb21waWxlU2hhZGVyKHNoYWRlcik7CisK
KyAgICBpZiAoIXNoYWRlci0+aXNWYWxpZCgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gY29u
dGV4dFdlYkdMLT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjb250ZXh0V2ViR0wtPmxpbmtQcm9ncmFtV2l0aG91dEludmFsaWRhdGluZ0F0
dHJpYkxvY2F0aW9ucygmaW5zcGVjdG9yUHJvZ3JhbS0+cHJvZ3JhbSgpKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHByb2dyYW1JZCk7CisgICAgVU5VU0VEX1BBUkFNKHNoYWRlclR5cGUpOwor
ICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOworICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJXZWJHTCBpcyBub3Qgc3VwcG9ydGVkLiIpOworI2VuZGlmCit9CisKIHZvaWQgSW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAgICBpZiAoZnJh
bWUuaXNNYWluRnJhbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaAppbmRleCBmMWNjZjdiNDkwNy4uYWExMDA0MmNiNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC03Niw2
ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RSZWNvcmRpbmcoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkLCBjb25zdCBib29sKiBjb25zdCBzaW5nbGVGcmFtZSwg
Y29uc3QgaW50KiBjb25zdCBtZW1vcnlMaW1pdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5jZWxS
ZWNvcmRpbmcoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbnZhc0lkKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlcXVlc3RTaGFkZXJTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHByb2dyYW1JZCwgY29uc3QgU3RyaW5nJiBzaGFkZXJUeXBlLCBTdHJpbmcqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZVNoYWRlcihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3Jh
bUlkLCBjb25zdCBTdHJpbmcmIHNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc291cmNlKSBvdmVy
cmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZnJhbWVO
YXZpZ2F0ZWQoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGE1OGQxOWJkM2Ey
Li42OWFjZmE3ZjE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAK
IDIwMTctMDgtMDQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZWRpdGluZyBXZWJHTCBzaGFkZXJzIGluIHRoZSBXZWIg
SW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQyMTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1NDQ4OTU4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2Rl
bHMvU2hhZGVyUHJvZ3JhbS5qczoKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0ucHJvdG90eXBl
LnVwZGF0ZVZlcnRleFNoYWRlcik6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtLnByb3RvdHlw
ZS51cGRhdGVGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtLnByb3Rv
dHlwZS5fdXBkYXRlU2hhZGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2hh
ZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU2hhZGVyUHJvZ3JhbUNvbnRl
bnRWaWV3KToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW1Db250ZW50Vmlldy5wcm90b3R5cGUu
X2NvbnRlbnREaWRDaGFuZ2UpOgorCisyMDE3LTA4LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc291cmNlIHZpZXcgZm9y
IFdlYkdMIHNoYWRlciBwcm9ncmFtcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM4NTkzCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODkzNjE5ND4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9T
aGFkZXJQcm9ncmFtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NoYWRlclByb2dyYW0uanMKaW5kZXggN2VlN2E4ZjhlZDYuLmZkY2E1ODgzMDY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVy
UHJvZ3JhbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvU2hhZGVyUHJvZ3JhbS5qcwpAQCAtNTcsNiArNTcsMTYgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9
IGNsYXNzIFNoYWRlclByb2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcmVx
dWVzdFNoYWRlclNvdXJjZShDYW52YXNBZ2VudC5TaGFkZXJUeXBlLkZyYWdtZW50LCBjYWxsYmFj
ayk7CiAgICAgfQogCisgICAgdXBkYXRlVmVydGV4U2hhZGVyKHNvdXJjZSkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3VwZGF0ZVNoYWRlcihDYW52YXNBZ2VudC5TaGFkZXJUeXBlLlZlcnRleCwgc291
cmNlKTsKKyAgICB9CisKKyAgICB1cGRhdGVGcmFnbWVudFNoYWRlcihzb3VyY2UpCisgICAgewor
ICAgICAgICB0aGlzLl91cGRhdGVTaGFkZXIoQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFnbWVu
dCwgc291cmNlKTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfcmVxdWVzdFNoYWRl
clNvdXJjZShzaGFkZXJUeXBlLCBjYWxsYmFjaykKQEAgLTcwLDYgKzgwLDEzIEBAIFdJLlNoYWRl
clByb2dyYW0gPSBjbGFzcyBTaGFkZXJQcm9ncmFtIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICBjYWxsYmFjayhjb250ZW50KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgX3VwZGF0
ZVNoYWRlcihzaGFkZXJUeXBlLCBzb3VyY2UpCisgICAgeworICAgICAgICBDYW52YXNBZ2VudC51
cGRhdGVTaGFkZXIodGhpcy5faWRlbnRpZmllciwgc2hhZGVyVHlwZSwgc291cmNlLCAoZXJyb3Ip
ID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFlcnJvciwgZXJyb3IpOworICAgICAg
ICB9KTsKKyAgICB9CiB9OwogCiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUgPSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQ
cm9ncmFtQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMKaW5kZXggNGM4MGViZGFiOTguLjE2
Nzk2OTA5NWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzCkBA
IC0zNSw4ICszNSwxMCBAQCBXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFk
ZXJQcm9ncmFtQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogCiAgICAgICAgIGxldCBj
cmVhdGVFZGl0b3IgPSAoc2hhZGVyVHlwZSkgPT4gewogICAgICAgICAgICAgbGV0IHRleHRFZGl0
b3IgPSBuZXcgV0kuVGV4dEVkaXRvcjsKKyAgICAgICAgICAgIHRleHRFZGl0b3IucmVhZE9ubHkg
PSBmYWxzZTsKICAgICAgICAgICAgIHRleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5UZXh0
RWRpdG9yLkV2ZW50LkZvY3VzZWQsIHRoaXMuX2VkaXRvckZvY3VzZWQsIHRoaXMpOwogICAgICAg
ICAgICAgdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdJLlRleHRFZGl0b3IuRXZlbnQuTnVt
YmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNE
aWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVy
KFdJLlRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5kZWJvdW5jZSgyNTAp
Ll9jb250ZW50RGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgICAgIHRleHRFZGl0b3IuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJzaGFkZXIiKTsKIAogICAgICAgICAgICAgbGV0IHNoYWRlclR5cGVD
b250YWluZXIgPSB0ZXh0RWRpdG9yLmVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCJhZnRl
cmJlZ2luIiwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwpAQCAtMTk0LDQgKzE5Niwx
MiBAQCBXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcgPSBjbGFzcyBTaGFkZXJQcm9ncmFtQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1
bHRzRGlkQ2hhbmdlKTsKICAgICB9CisKKyAgICBfY29udGVudERpZENoYW5nZShldmVudCkKKyAg
ICB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMuX3ZlcnRleEVkaXRvcikKKyAg
ICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXBkYXRlVmVydGV4U2hhZGVyKHRoaXMu
X3ZlcnRleEVkaXRvci5zdHJpbmcpOworICAgICAgICBlbHNlIGlmIChldmVudC50YXJnZXQgPT09
IHRoaXMuX2ZyYWdtZW50RWRpdG9yKQorICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVj
dC51cGRhdGVGcmFnbWVudFNoYWRlcih0aGlzLl9mcmFnbWVudEVkaXRvci5zdHJpbmcpOworICAg
IH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317649</attachid>
            <date>2017-08-08 16:46:46 -0700</date>
            <delta_ts>2017-08-08 18:14:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124211-20170808164641.patch</filename>
            <type>text/plain</type>
            <size>20533</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDllOGU0NjYwODAyNjRjZDMzYmYxZjUxYTE4ODBj
Yzk4MDg3YjU2OTcuLjNlMTUxYzczNzY0ZWZiY2ZkMzRmNDYyNDRlZGU5YWVhZDExN2Q4NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTA4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
dXBwb3J0IGVkaXRpbmcgV2ViR0wgc2hhZGVycyBpbiB0aGUgV2ViIEluc3BlY3RvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjExCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8xNTQ0ODk1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9DYW52YXMuanNvbjoKKyAg
ICAgICAgQWRkIGB1cGRhdGVTaGFkZXJgIGNvbW1hbmQgdGhhdCB3aWxsIGNoYW5nZSB0aGUgZ2l2
ZW4gc2hhZGVyJ3Mgc291cmNlIHRvIHRoZSBwcm92aWRlZCBzdHJpbmcsCisgICAgICAgIHJlY29t
cGlsZSwgYW5kIHJlbGluayBpdCB0byBpdHMgYXNzb2NpYXRlZCBwcm9ncmFtLgorICAgICAgICBE
cml2ZS1ieTogYWRkIGRlc2NyaXB0aW9uIHRvIGByZXF1ZXN0U2hhZGVyU291cmNlYCBjb21tYW5k
LgorCiAyMDE3LTA4LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQmFzZWxpbmUgSklUIHNob3VsZCBkbyBjYWdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlODgzNjkxNDJh
NDI0OTZmNWU5NGRjMjMzODRkN2JjZmViYWVmYmFkLi4wYjJlZjhjZTQ5ZDg1YzU5NjY5ZjhiN2Vi
NzkyYjUxNmRlN2Y2ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTctMDgtMDgg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHN1cHBvcnQgZWRpdGluZyBXZWJHTCBzaGFkZXJzIGluIHRoZSBXZWIgSW5zcGVjdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQyMTEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1NDQ4OTU4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hh
ZGVyLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6dXBkYXRlU2hhZGVyKToKKworICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91dEludmFsaWRh
dGluZ0F0dHJpYkxvY2F0aW9ucyk6CisgICAgICAgIE5vcm1hbGx5LCB3aGVuIGEgcHJvZ3JhbSBp
cyBsaW5rZWQsIGl0IGludmFsaWRhdGVzIGFueSBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBhc3NvY2lh
dGVkIHdpdGgKKyAgICAgICAgdGhlIHByb2dyYW0gYnkgaW5jcmVtZW50aW5nIGl0cyBgbGlua0Nv
dW50YC4gSW4gb3JkZXIgdG8gYWxsb3cgbGl2ZSBlZGl0aW5nIG9mIHNoYWRlcnMsIHdlCisgICAg
ICAgIG5lZWQgdG8gYmUgYWJsZSB0byBjb21waWxlIGFuZCBsaW5rIGEgc2hhZGVyIHdpdGhvdXQg
aW52YWxpZGF0aW5nIHRoZXNlIGxvY2F0aW9ucy4gVGhpcworICAgICAgICBwYXRjaCBtb3ZlcyB0
aGUgc2hhZGVyIGxpbmtpbmcgbG9naWMgdG8gaXRzIG93biBmdW5jdGlvbiB0aGF0IGlzIGNhbGxl
ZCBieSBgbGlua1Byb2dyYW1gIHNvCisgICAgICAgIHRoYXQgSW5zcGVjdG9yQ2FudmFzQWdlbnQg
Y2FuIGNvbXBpbGUgYW5kIGxpbmsgd2l0aG91dCBpbnZhbGlkYXRpb24uCisKIDIwMTctMDgtMDcg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFByZXZpZXcgQ2FudmFzIHBhdGggd2hlbiB2aWV3aW5nIGEgcmVjb3JkaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwppbmRleCAyMTQ5YzUzMzBmMWQ5NmJhZTdjZGRlMWYwMGM4MTY1ZGFlMGFi
NDhlLi5lYTIzY2NiYjVhYWRhNTNmNjkyZDg4OTk2MTI0Y2QyYWQ5ODRjMTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wOC0wOCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBl
ZGl0aW5nIFdlYkdMIHNoYWRlcnMgaW4gdGhlIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDIxMQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTU0NDg5NTg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzOgorICAg
ICAgICAoV0kuU2hhZGVyUHJvZ3JhbS5wcm90b3R5cGUudXBkYXRlVmVydGV4U2hhZGVyKToKKyAg
ICAgICAgKFdJLlNoYWRlclByb2dyYW0ucHJvdG90eXBlLnVwZGF0ZUZyYWdtZW50U2hhZGVyKToK
KyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0ucHJvdG90eXBlLl91cGRhdGVTaGFkZXIpOgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuU2hh
ZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudERpZENoYW5nZSk6CisKIDIw
MTctMDgtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFByZXZpZXcgQ2FudmFzIHBhdGggd2hlbiB2aWV3aW5nIGEgcmVjb3JkaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Nh
bnZhcy5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9DYW52
YXMuanNvbgppbmRleCBiY2NmM2ZjNzhlMmIyZDhlYjRkZDNhZDk3ZTk0NWZlZWJkOGQxOGY4Li5i
MDFiODMzMTgwYTgzYjE1MWRlZDdjMTkzZjhkNTA4ZDE0ZDFlYjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFzLmpzb24KQEAgLTEy
Miw3ICsxMjIsNyBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6
ICJyZXF1ZXN0U2hhZGVyU291cmNlIiwKLSAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICIiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoZSBzb3VyY2Ugb2YgdGhlIHNo
YWRlciBvZiB0aGUgZ2l2ZW4gdHlwZSBmcm9tIHRoZSBwcm9ncmFtIHdpdGggdGhlIGdpdmVuIGlk
LiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9CkBAIC0xMzAsNiAr
MTMwLDE1IEBACiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICAgICAgIF0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAidXBkYXRlU2hhZGVyIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBhbmQgbGlua3MgdGhlIHNoYWRlciB3
aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUuIiwKKyAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHJv
Z3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic2hhZGVyVHlwZSIsICIkcmVmIjogIlNoYWRlclR5cGUiIH0sCisgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJzb3VyY2UiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAgICAgICAgIF0KICAg
ICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMGZj
NzFlMjdlMGRhYzRjOTZhN2I0NzY0OWFlYmM3MzE5YmFiNTFhYS4uMTY5NjQyODAxNDUwOTMyMDUz
NDNiY2NkM2Q3ZTBhNGFkOTUwMzc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTI4MzYsMTcgKzI4
MzYsMjYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5lV2lkdGgoR0MzRGZs
b2F0IHdpZHRoKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFt
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKLSAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpIHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJsaW5rUHJvZ3JhbSIsIHByb2dyYW0pKQorICAg
IGlmICghbGlua1Byb2dyYW1XaXRob3V0SW52YWxpZGF0aW5nQXR0cmliTG9jYXRpb25zKHByb2dy
YW0pKQogICAgICAgICByZXR1cm47CisKKyAgICBwcm9ncmFtLT5pbmNyZWFzZUxpbmtDb3VudCgp
OworfQorCitib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91
dEludmFsaWRhdGluZ0F0dHJpYkxvY2F0aW9ucyhXZWJHTFByb2dyYW0qIHByb2dyYW0pCit7Cisg
ICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgi
bGlua1Byb2dyYW0iLCBwcm9ncmFtKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgV2Vi
R0xTaGFkZXIqIHZlcnRleFNoYWRlciA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyKEdyYXBo
aWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKICAgICBXZWJHTFNoYWRlciogZnJhZ21lbnRT
aGFkZXIgPSBwcm9ncmFtLT5nZXRBdHRhY2hlZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
R01FTlRfU0hBREVSKTsKICAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5p
c1ZhbGlkKCkgfHwgIWZyYWdtZW50U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlci0+aXNWYWxpZCgp
IHx8ICFtX2NvbnRleHQtPnByZWNpc2lvbnNNYXRjaChvYmplY3RPclplcm8odmVydGV4U2hhZGVy
KSwgb2JqZWN0T3JaZXJvKGZyYWdtZW50U2hhZGVyKSkgfHwgIW1fY29udGV4dC0+Y2hlY2tWYXJ5
aW5nc1BhY2tpbmcob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRlciksIG9iamVjdE9yWmVybyhmcmFn
bWVudFNoYWRlcikpKSB7CiAgICAgICAgIHByb2dyYW0tPnNldExpbmtTdGF0dXMoZmFsc2UpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBtX2Nv
bnRleHQtPmxpbmtQcm9ncmFtKG9iamVjdE9yWmVybyhwcm9ncmFtKSk7Ci0gICAgcHJvZ3JhbS0+
aW5jcmVhc2VMaW5rQ291bnQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBw
YXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAppbmRleCA3MGY3NmNlOWRiNGNiYWI2YWJmZWFiZTc3YzhlOWUxNTdl
YjNmOWY4Li4yYjEzNGMyMmJiZjViNTQxNjE2ZTZkZGE2MDg4Y2I4NTgwY2RkMGU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCkBAIC0yMjgsNiArMjI4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaW5lV2lkdGgo
R0MzRGZsb2F0KTsKICAgICB2b2lkIGxpbmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSopOworICAgIGJv
b2wgbGlua1Byb2dyYW1XaXRob3V0SW52YWxpZGF0aW5nQXR0cmliTG9jYXRpb25zKFdlYkdMUHJv
Z3JhbSopOwogICAgIHZvaWQgcGl4ZWxTdG9yZWkoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFy
YW0pOwogICAgIHZvaWQgcG9seWdvbk9mZnNldChHQzNEZmxvYXQgZmFjdG9yLCBHQzNEZmxvYXQg
dW5pdHMpOwogICAgIHZvaWQgcmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5
cGUsIEFycmF5QnVmZmVyVmlldyYgcGl4ZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDI2ZWY3ODI0ZmFhMjExYWM0ZDIz
ZWE5NGFiMjk3MDk3ZWFkMTNmMGUuLjJiMGVlNzFmYTgwYWIxYzJjZTQ1ODhiNjgyMGI5MDVjZGU5
NmFkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmNwcApAQCAtMjkzLDYgKzI5MywzNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpyZXF1ZXN0U2hhZGVyU291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUwog
I2VuZGlmCiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnVwZGF0ZVNoYWRlcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25zdCBTdHJp
bmcmIHNoYWRlclR5cGUsIGNvbnN0IFN0cmluZyYgc291cmNlKQoreworI2lmIEVOQUJMRShXRUJH
TCkKKyAgICBhdXRvKiBpbnNwZWN0b3JQcm9ncmFtID0gYXNzZXJ0SW5zcGVjdG9yUHJvZ3JhbShl
cnJvclN0cmluZywgcHJvZ3JhbUlkKTsKKyAgICBpZiAoIWluc3BlY3RvclByb2dyYW0pCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIHNoYWRlciA9IGluc3BlY3RvclByb2dyYW0tPnNoYWRl
ckZvclR5cGUoc2hhZGVyVHlwZSk7CisgICAgaWYgKCFzaGFkZXIpIHsKKyAgICAgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIHNoYWRlciBmb3IgZ2l2ZW4gdHlwZS4iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHRXZWJHTCA9IGluc3BlY3RvclByb2dyYW0tPmNvbnRleHQoKTsKKyAgICBjb250ZXh0V2ViR0wt
PnNoYWRlclNvdXJjZShzaGFkZXIsIHNvdXJjZSk7CisgICAgY29udGV4dFdlYkdMLT5jb21waWxl
U2hhZGVyKHNoYWRlcik7CisKKyAgICBpZiAoIXNoYWRlci0+aXNWYWxpZCgpKSB7CisgICAgICAg
IGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGV4dFdlYkdMLT5saW5rUHJvZ3Jh
bVdpdGhvdXRJbnZhbGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMoJmluc3BlY3RvclByb2dyYW0tPnBy
b2dyYW0oKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtSWQpOworICAgIFVOVVNF
RF9QQVJBTShzaGFkZXJUeXBlKTsKKyAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKKyAgICBlcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiV2ViR0wgaXMgbm90IHN1cHBvcnRlZC4iKTsKKyNlbmRp
ZgorfQorCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpmcmFtZU5hdmlnYXRlZChGcmFtZSYg
ZnJhbWUpCiB7CiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggZjFjY2Y3YjQ5MDc1
ZDg4ZWUzNjhkNzY0YzcwNzI0N2JiODg2YTFkYy4uYWExMDA0MmNiNzc5ZDdjOWQyMjg5OTYzMzA4
ZGFiYzVjYmU2YThjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVz
dFJlY29yZGluZyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IGJv
b2wqIGNvbnN0IHNpbmdsZUZyYW1lLCBjb25zdCBpbnQqIGNvbnN0IG1lbW9yeUxpbWl0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGNhbmNlbFJlY29yZGluZyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY2FudmFzSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFNoYWRlclNvdXJjZShFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25zdCBTdHJpbmcmIHNoYWRlclR5
cGUsIFN0cmluZyopIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2hhZGVyKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBwcm9ncmFtSWQsIGNvbnN0IFN0cmluZyYgc2hhZGVyVHlwZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2UpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NoYWRlclByb2dyYW0uanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVyUHJvZ3Jh
bS5qcwppbmRleCA3ZWU3YThmOGVkNjVkOGMxNmRlMjc4ZmY5Yzk2MDliNTE4MzRlOGUxLi5mZGNh
NTg4MzA2NWFiNDQ0ZWNjMjFjZGM3NTUwNzZjZTUxNjA0NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVyUHJvZ3JhbS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVyUHJvZ3Jh
bS5qcwpAQCAtNTcsNiArNTcsMTYgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9IGNsYXNzIFNoYWRlclBy
b2dyYW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcmVxdWVzdFNoYWRlclNvdXJj
ZShDYW52YXNBZ2VudC5TaGFkZXJUeXBlLkZyYWdtZW50LCBjYWxsYmFjayk7CiAgICAgfQogCisg
ICAgdXBkYXRlVmVydGV4U2hhZGVyKHNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3VwZGF0
ZVNoYWRlcihDYW52YXNBZ2VudC5TaGFkZXJUeXBlLlZlcnRleCwgc291cmNlKTsKKyAgICB9CisK
KyAgICB1cGRhdGVGcmFnbWVudFNoYWRlcihzb3VyY2UpCisgICAgeworICAgICAgICB0aGlzLl91
cGRhdGVTaGFkZXIoQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFnbWVudCwgc291cmNlKTsKKyAg
ICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfcmVxdWVzdFNoYWRlclNvdXJjZShzaGFkZXJU
eXBlLCBjYWxsYmFjaykKQEAgLTcwLDYgKzgwLDEzIEBAIFdJLlNoYWRlclByb2dyYW0gPSBjbGFz
cyBTaGFkZXJQcm9ncmFtIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBjYWxsYmFjayhj
b250ZW50KTsKICAgICAgICAgfSk7CiAgICAgfQorCisgICAgX3VwZGF0ZVNoYWRlcihzaGFkZXJU
eXBlLCBzb3VyY2UpCisgICAgeworICAgICAgICBDYW52YXNBZ2VudC51cGRhdGVTaGFkZXIodGhp
cy5faWRlbnRpZmllciwgc2hhZGVyVHlwZSwgc291cmNlLCAoZXJyb3IpID0+IHsKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCFlcnJvciwgZXJyb3IpOworICAgICAgICB9KTsKKyAgICB9CiB9
OwogCiBXSS5TaGFkZXJQcm9ncmFtLlNoYWRlclR5cGUgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQcm9ncmFtQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaGFkZXJQ
cm9ncmFtQ29udGVudFZpZXcuanMKaW5kZXggNGM4MGViZGFiOThhZWE1NDY1ODdmOTJlZDM3MGUw
ODYxYmQ3YWQ0Mi4uMTY3OTY5MDk1ZGVmYjdlZTU2OTI0OWY3ZTdiYTVkNzQ1MGYyZjgzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2hhZGVy
UHJvZ3JhbUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcwpAQCAtMzUsOCArMzUsMTAg
QEAgV0kuU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3ID0gY2xhc3MgU2hhZGVyUHJvZ3JhbUNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAgICBsZXQgY3JlYXRlRWRpdG9yID0g
KHNoYWRlclR5cGUpID0+IHsKICAgICAgICAgICAgIGxldCB0ZXh0RWRpdG9yID0gbmV3IFdJLlRl
eHRFZGl0b3I7CisgICAgICAgICAgICB0ZXh0RWRpdG9yLnJlYWRPbmx5ID0gZmFsc2U7CiAgICAg
ICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5G
b2N1c2VkLCB0aGlzLl9lZGl0b3JGb2N1c2VkLCB0aGlzKTsKICAgICAgICAgICAgIHRleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5UZXh0RWRpdG9yLkV2ZW50Lk51bWJlck9mU2VhcmNoUmVz
dWx0c0RpZENoYW5nZSwgdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlz
KTsKKyAgICAgICAgICAgIHRleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5UZXh0RWRpdG9y
LkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuZGVib3VuY2UoMjUwKS5fY29udGVudERpZENo
YW5nZSwgdGhpcyk7CiAgICAgICAgICAgICB0ZXh0RWRpdG9yLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic2hhZGVyIik7CiAKICAgICAgICAgICAgIGxldCBzaGFkZXJUeXBlQ29udGFpbmVyID0gdGV4
dEVkaXRvci5lbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudCgiYWZ0ZXJiZWdpbiIsIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKQEAgLTE5NCw0ICsxOTYsMTIgQEAgV0kuU2hhZGVy
UHJvZ3JhbUNvbnRlbnRWaWV3ID0gY2xhc3MgU2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFYKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSk7
CiAgICAgfQorCisgICAgX2NvbnRlbnREaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLl92ZXJ0ZXhFZGl0b3IpCisgICAgICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnVwZGF0ZVZlcnRleFNoYWRlcih0aGlzLl92ZXJ0ZXhFZGl0b3Iu
c3RyaW5nKTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9mcmFnbWVu
dEVkaXRvcikKKyAgICAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXBkYXRlRnJhZ21l
bnRTaGFkZXIodGhpcy5fZnJhZ21lbnRFZGl0b3Iuc3RyaW5nKTsKKyAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGU3ZDE3NDMxMzdkNTc2ZGNhYzQxNDZlOTJiZWIzZDNmNjUwZjQzOTMuLjk1Yzg0MDExNzk5ZGJk
YzA1NDRlZWQ2ZjA1Y2M2YWQ1NWNlNGIyMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0w
OC0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3Rvcjogc3VwcG9ydCBlZGl0aW5nIFdlYkdMIHNoYWRlcnMgaW4gdGhlIFdlYiBJbnNwZWN0
b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDIx
MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU0NDg5NTg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvdXBk
YXRlU2hhZGVyLmh0bWw6IEFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMTctMDgtMDcgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4K
IAogICAgICAgICBDaGFuZ2VkIGV4cGVjdGF0aW9ucyBmb3Igd2VicnRjL3ZpZGVvLXJvdGF0aW9u
Lmh0bWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNo
YWRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGViMTcxZjRjZDQzMDhlYjhlMWNhZGQ4YTNl
ZmIzYmRkMmE2YWVmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvdXBkYXRlU2hhZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitDT05TT0xF
IE1FU1NBR0U6IFdlYkdMOiBFUlJPUjogMDoxOiAnSU5WQUxJRCcgOiBzeW50YXggZXJyb3IKK0NP
TlNPTEUgTUVTU0FHRTogV2ViR0w6IEVSUk9SOiAwOjE6ICdJTlZBTElEJyA6IHN5bnRheCBlcnJv
cgorVGVzdCBjb21waWxhdGlvbiBvZiBzaGFkZXJzIGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEg
cHJvZ3JhbSwgd2l0aCBhbmQgd2l0aG91dCBzeW50YXggZXJyb3JzLgorCisKKz09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogQ2FudmFzLnVwZGF0ZVNoYWRlcgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IENh
bnZhcy51cGRhdGVTaGFkZXIudmVydGV4U2hhZGVyVmFsaWQKKworICAgIHZvaWQgbWFpbih2b2lk
KSB7CisgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLCAyLCAzLCA0KTsKKyAgICB9CisKKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuZnJhZ21lbnRTaGFkZXJW
YWxpZAorCisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICB2b2lkIG1haW4odm9p
ZCkgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMSwgMC4yLCAwLjMsIDAuNCk7Cisg
ICAgfQorCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLmludmFs
aWRQcm9ncmFtSWQKK1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgorRXJyb3I6IE5vIHNo
YWRlciBwcm9ncmFtIGZvciBnaXZlbiBpZGVudGlmaWVyLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkU2hhZGVyVHlwZQorUEFTUzogU2hvdWxkIHBy
b2R1Y2UgYW4gZXJyb3IuCitFcnJvcjogTm8gc2hhZGVyIGZvciBnaXZlbiB0eXBlLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkVmVydGV4U2hhZGVy
U291cmNlCitQQVNTOiBTaG91bGQgcHJvZHVjZSBlcnJvci4KK0Vycm9yOiBTaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRl
ci5pbnZhbGlkRnJhZ21lbnRTaGFkZXJTb3VyY2UKK1BBU1M6IFNob3VsZCBwcm9kdWNlIGVycm9y
LgorRXJyb3I6IFNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0OWFkMmIzMTNj
Nzc3NmUxMDk4ZDA4NWU1NzQ2ZGY2NmFiZjBhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci5odG1sCkBAIC0wLDAgKzEsMTQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhZGVyUHJvZ3JhbS11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0idmVydGV4LXNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgi
PgorICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLjAs
IDAuMCwgMC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0iZnJhZ21lbnQt
c2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LWZyYWdtZW50Ij4KKyAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2FkKCkgeworICAgIGNyZWF0ZVByb2dyYW0oIndlYmdsIik7CisgICAgbGlua1By
b2dyYW0oInZlcnRleC1zaGFkZXIiLCAiZnJhZ21lbnQtc2hhZGVyIik7CisKKyAgICBydW5UZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJDYW52YXMudXBkYXRlU2hhZGVyIik7CisKKyAgICBmdW5jdGlv
biB2YWxpZFNvdXJjZVRlc3Qoe25hbWUsIHNoYWRlclR5cGUsIHNvdXJjZX0pIHsKKyAgICAgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICAgICAgbGV0IHNoYWRlclByb2dyYW0gPSBX
SS5jYW52YXNNYW5hZ2VyLnNoYWRlclByb2dyYW1zWzBdOworICAgICAgICAgICAgICAgIGlmICgh
c2hhZGVyUHJvZ3JhbSkgeworICAgICAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Npbmcgc2hh
ZGVyIHByb2dyYW0iKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgbGV0IHByb2dyYW1JZCA9IHNoYWRlclByb2dyYW0uaWRl
bnRpZmllcjsKKworICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnVwZGF0ZVNoYWRlcihwcm9n
cmFtSWQsIHNoYWRlclR5cGUsIHNvdXJjZSkKKyAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBD
YW52YXNBZ2VudC5yZXF1ZXN0U2hhZGVyU291cmNlKHByb2dyYW1JZCwgc2hhZGVyVHlwZSkpCisg
ICAgICAgICAgICAgICAgLnRoZW4oKHtjb250ZW50fSkgPT4gSW5zcGVjdG9yVGVzdC5sb2coY29u
dGVudCkpCisgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdmFsaWRTb3VyY2VUZXN0KHsKKyAgICAg
ICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIudmVydGV4U2hhZGVyVmFsaWQiLAorICAgICAg
ICBzaGFkZXJUeXBlOiBDYW52YXNBZ2VudC5TaGFkZXJUeXBlLlZlcnRleCwKKyAgICAgICAgc291
cmNlOiBgCisgICAgdm9pZCBtYWluKHZvaWQpIHsKKyAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KDEsIDIsIDMsIDQpOworICAgIH0KK2AsCisgICAgfSk7CisKKyAgICB2YWxpZFNvdXJjZVRlc3Qo
eworICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5mcmFnbWVudFNoYWRlclZhbGlk
IiwKKyAgICAgICAgc2hhZGVyVHlwZTogQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFnbWVudCwK
KyAgICAgICAgc291cmNlOiBgCisgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICB2
b2lkIG1haW4odm9pZCkgeworICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMSwgMC4yLCAw
LjMsIDAuNCk7CisgICAgfQorYCwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuaW52YWxpZFByb2dyYW1JZCIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiSW52YWxpZCBwcm9ncmFtIGlkZW50aWZpZXJzIHNob3VsZCBj
YXVzZSBhbiBlcnJvci4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgICAgY29uc3QgcHJvZ3JhbUlkID0gIklOVkFMSURfUFJPR1JBTV9JRCI7CisgICAgICAgICAg
ICBjb25zdCBzaGFkZXJUeXBlID0gIklOVkFMSURfU0hBREVSX1RZUEUiOworICAgICAgICAgICAg
Y29uc3Qgc291cmNlID0gIklOVkFMSURfU09VUkNFIjsKKyAgICAgICAgICAgIENhbnZhc0FnZW50
LnVwZGF0ZVNoYWRlcihwcm9ncmFtSWQsIHNoYWRlclR5cGUsIHNvdXJjZSwgKGVycm9yKSA9PiB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiU2hvdWxk
IHByb2R1Y2UgYW4gZXJyb3IuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLmludmFsaWRTaGFkZXJUeXBlIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJJbnZhbGlkIHNoYWRlciB0eXBlcyBzaG91bGQgY2F1c2UgYW4g
ZXJyb3IuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIGxl
dCBzaGFkZXJQcm9ncmFtID0gV0kuY2FudmFzTWFuYWdlci5zaGFkZXJQcm9ncmFtc1swXTsKKyAg
ICAgICAgICAgIGlmICghc2hhZGVyUHJvZ3JhbSkgeworICAgICAgICAgICAgICAgIHJlamVjdCgi
TWlzc2luZyBzaGFkZXIgcHJvZ3JhbSIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBzaGFkZXJUeXBlID0gIklOVkFMSURfU0hBREVS
X1RZUEUiOworICAgICAgICAgICAgY29uc3Qgc291cmNlID0gIklOVkFMSURfU09VUkNFIjsKKyAg
ICAgICAgICAgIENhbnZhc0FnZW50LnVwZGF0ZVNoYWRlcihzaGFkZXJQcm9ncmFtLmlkZW50aWZp
ZXIsIHNoYWRlclR5cGUsIHNvdXJjZSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KGVycm9yLCAiU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuIik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVycm9yOiAiICsgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBmdW5jdGlvbiBpbnZhbGlkU291cmNlVGVzdCh7bmFtZSwgc2hhZGVyVHlw
ZSwgc291cmNlfSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBu
YW1lLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAg
ICBsZXQgc2hhZGVyUHJvZ3JhbSA9IFdJLmNhbnZhc01hbmFnZXIuc2hhZGVyUHJvZ3JhbXNbMF07
CisgICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFtKSB7CisgICAgICAgICAgICAgICAg
ICAgIHJlamVjdCgiTWlzc2luZyBzaGFkZXIgcHJvZ3JhbSIpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBDYW52YXNBZ2Vu
dC51cGRhdGVTaGFkZXIoc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyLCBzaGFkZXJUeXBlLCBzb3Vy
Y2UsIChlcnJvcikgPT4geworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoZXJyb3IsICJTaG91bGQgcHJvZHVjZSBlcnJvci4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkVycm9yOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIGludmFsaWRTb3VyY2VUZXN0KHsKKyAgICAgICAgbmFtZTog
IkNhbnZhcy51cGRhdGVTaGFkZXIuaW52YWxpZFZlcnRleFNoYWRlclNvdXJjZSIsCisgICAgICAg
IHNoYWRlclR5cGU6IENhbnZhc0FnZW50LlNoYWRlclR5cGUuVmVydGV4LAorICAgICAgICBzb3Vy
Y2U6ICJJTlZBTElEIiwKKyAgICB9KTsKKworICAgIGludmFsaWRTb3VyY2VUZXN0KHsKKyAgICAg
ICAgbmFtZTogIkNhbnZhcy51cGRhdGVTaGFkZXIuaW52YWxpZEZyYWdtZW50U2hhZGVyU291cmNl
IiwKKyAgICAgICAgc2hhZGVyVHlwZTogQ2FudmFzQWdlbnQuU2hhZGVyVHlwZS5GcmFnbWVudCwK
KyAgICAgICAgc291cmNlOiAiSU5WQUxJRCIsCisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJs
b2FkKCkiPgorICAgIDxwPlRlc3QgY29tcGlsYXRpb24gb2Ygc2hhZGVycyBhZnRlciBiZWluZyBh
dHRhY2hlZCB0byBhIHByb2dyYW0sIHdpdGggYW5kIHdpdGhvdXQgc3ludGF4IGVycm9ycy48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDhlNjVmZTkxMWYxNTk5OGVmZWY1ZDFiMmNiZTE1MTE4MjY4ZDg1NzYuLjgxZTI1
YWNlYjg3M2NmOTRmMjYwYTA2MTAxZTIyM2ViZDZkMDRjZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTE2LDYgKzE5MTYsNyBAQCBpbnNwZWN0b3Iv
Y2FudmFzL3Jlc29sdmVDYW52YXNDb250ZXh0LXdlYmdsLmh0bWwgWyBTa2lwIF0KIGluc3BlY3Rv
ci9jYW52YXMvcmVzb2x2ZUNhbnZhc0NvbnRleHQtd2ViZ2wyLmh0bWwgWyBTa2lwIF0KIGluc3Bl
Y3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdsLmh0bWwgWyBTa2lwIF0K
IGluc3BlY3Rvci9jYW52YXMvc2hhZGVyUHJvZ3JhbS1hZGQtcmVtb3ZlLXdlYmdsMi5odG1sIFsg
U2tpcCBdCitpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci5odG1sIFsgU2tpcCBdCiAjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIyMjIyMjIyMjIyMjIyMgICAgICAgICAgRW5kIFdlYkdM
IElzc3VlcyAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCg==
</data>
<flag name="review"
          id="338168"
          type_id="1"
          status="+"
          setter="mattbaker"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317662</attachid>
            <date>2017-08-08 18:14:10 -0700</date>
            <delta_ts>2017-08-08 18:55:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>124211.diff</filename>
            <type>text/plain</type>
            <size>19587</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlN2QxNzQzMTM3ZC4uNjhlN2IxMTZkZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxNy0wOC0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGVkaXRpbmcgV2ViR0wgc2hhZGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjExCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTQ0ODk1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0
IEJha2VyLgorCisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY2FudmFzL3VwZGF0ZVNoYWRlci5o
dG1sOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDE3LTA4LTA3ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAg
Q2hhbmdlZCBleHBlY3RhdGlvbnMgZm9yIHdlYnJ0Yy92aWRlby1yb3RhdGlvbi5odG1sLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy91cGRhdGVTaGFkZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZWIxNzFmNGNk
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvdXBkYXRl
U2hhZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACitDT05TT0xFIE1FU1NBR0U6IFdl
YkdMOiBFUlJPUjogMDoxOiAnSU5WQUxJRCcgOiBzeW50YXggZXJyb3IKK0NPTlNPTEUgTUVTU0FH
RTogV2ViR0w6IEVSUk9SOiAwOjE6ICdJTlZBTElEJyA6IHN5bnRheCBlcnJvcgorVGVzdCBjb21w
aWxhdGlvbiBvZiBzaGFkZXJzIGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEgcHJvZ3JhbSwgd2l0
aCBhbmQgd2l0aG91dCBzeW50YXggZXJyb3JzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
Q2FudmFzLnVwZGF0ZVNoYWRlcgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVT
aGFkZXIudmVydGV4U2hhZGVyVmFsaWQKKworICAgIHZvaWQgbWFpbih2b2lkKSB7CisgICAgICAg
IGdsX1Bvc2l0aW9uID0gdmVjNCgxLCAyLCAzLCA0KTsKKyAgICB9CisKKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IENhbnZhcy51cGRhdGVTaGFkZXIuZnJhZ21lbnRTaGFkZXJWYWxpZAorCisgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CisKKyAgICB2b2lkIG1haW4odm9pZCkgeworICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMSwgMC4yLCAwLjMsIDAuNCk7CisgICAgfQorCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBDYW52YXMudXBkYXRlU2hhZGVyLmludmFsaWRQcm9ncmFtSWQK
K1BBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgorRXJyb3I6IE5vIHNoYWRlciBwcm9ncmFt
IGZvciBnaXZlbiBpZGVudGlmaWVyLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVw
ZGF0ZVNoYWRlci5pbnZhbGlkU2hhZGVyVHlwZQorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJy
b3IuCitFcnJvcjogTm8gc2hhZGVyIGZvciBnaXZlbiB0eXBlLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkVmVydGV4U2hhZGVyU291cmNlCitQQVNT
OiBTaG91bGQgcHJvZHVjZSBlcnJvci4KK0Vycm9yOiBTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVk
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkRnJh
Z21lbnRTaGFkZXJTb3VyY2UKK1BBU1M6IFNob3VsZCBwcm9kdWNlIGVycm9yLgorRXJyb3I6IFNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2Fu
dmFzL3VwZGF0ZVNoYWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5lNDlhZDJiMzEzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwKQEAgLTAsMCArMSwxNDQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGFkZXJQcm9ncmFtLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJ2ZXJ0ZXgtc2hhZGVyIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisgICAgdm9pZCBt
YWluKHZvaWQpIHsKKyAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmcmFnbWVudC1zaGFkZXIiIHR5cGU9
Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OworCisg
ICAgdm9pZCBtYWluKHZvaWQpIHsKKyAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEu
MCwgMS4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWQo
KSB7CisgICAgY3JlYXRlUHJvZ3JhbSgid2ViZ2wiKTsKKyAgICBsaW5rUHJvZ3JhbSgidmVydGV4
LXNoYWRlciIsICJmcmFnbWVudC1zaGFkZXIiKTsKKworICAgIHJ1blRlc3QoKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpIHsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIkNhbnZhcy51cGRhdGVTaGFkZXIiKTsKKworICAgIGZ1bmN0aW9uIHZhbGlkU291cmNl
VGVzdCh7bmFtZSwgc2hhZGVyVHlwZSwgc291cmNlfSkgeworICAgICAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKKyAgICAgICAgICAgICAgICBsZXQgc2hhZGVyUHJvZ3JhbSA9IFdJLmNhbnZhc01hbmFn
ZXIuc2hhZGVyUHJvZ3JhbXNbMF07CisgICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJQcm9ncmFt
KSB7CisgICAgICAgICAgICAgICAgICAgIHJlamVjdCgiTWlzc2luZyBzaGFkZXIgcHJvZ3JhbSIp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBsZXQgcHJvZ3JhbUlkID0gc2hhZGVyUHJvZ3JhbS5pZGVudGlmaWVyOworCisg
ICAgICAgICAgICAgICAgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVyKHByb2dyYW1JZCwgc2hhZGVy
VHlwZSwgc291cmNlKQorICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IENhbnZhc0FnZW50LnJl
cXVlc3RTaGFkZXJTb3VyY2UocHJvZ3JhbUlkLCBzaGFkZXJUeXBlKSkKKyAgICAgICAgICAgICAg
ICAudGhlbigoe2NvbnRlbnR9KSA9PiBJbnNwZWN0b3JUZXN0LmxvZyhjb250ZW50KSkKKyAgICAg
ICAgICAgICAgICAudGhlbihyZXNvbHZlLCByZWplY3QpOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICB2YWxpZFNvdXJjZVRlc3QoeworICAgICAgICBuYW1lOiAiQ2Fu
dmFzLnVwZGF0ZVNoYWRlci52ZXJ0ZXhTaGFkZXJWYWxpZCIsCisgICAgICAgIHNoYWRlclR5cGU6
IENhbnZhc0FnZW50LlNoYWRlclR5cGUuVmVydGV4LAorICAgICAgICBzb3VyY2U6IGAKKyAgICB2
b2lkIG1haW4odm9pZCkgeworICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMSwgMiwgMywgNCk7
CisgICAgfQorYCwKKyAgICB9KTsKKworICAgIHZhbGlkU291cmNlVGVzdCh7CisgICAgICAgIG5h
bWU6ICJDYW52YXMudXBkYXRlU2hhZGVyLmZyYWdtZW50U2hhZGVyVmFsaWQiLAorICAgICAgICBz
aGFkZXJUeXBlOiBDYW52YXNBZ2VudC5TaGFkZXJUeXBlLkZyYWdtZW50LAorICAgICAgICBzb3Vy
Y2U6IGAKKyAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKKworICAgIHZvaWQgbWFpbih2b2lk
KSB7CisgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4xLCAwLjIsIDAuMywgMC40KTsKKyAg
ICB9CitgLAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiQ2FudmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkUHJvZ3JhbUlkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJJbnZhbGlkIHByb2dyYW0gaWRlbnRpZmllcnMgc2hvdWxkIGNhdXNlIGFuIGVycm9y
LiIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBjb25zdCBw
cm9ncmFtSWQgPSAiSU5WQUxJRF9QUk9HUkFNX0lEIjsKKyAgICAgICAgICAgIGNvbnN0IHNoYWRl
clR5cGUgPSAiSU5WQUxJRF9TSEFERVJfVFlQRSI7CisgICAgICAgICAgICBjb25zdCBzb3VyY2Ug
PSAiSU5WQUxJRF9TT1VSQ0UiOworICAgICAgICAgICAgQ2FudmFzQWdlbnQudXBkYXRlU2hhZGVy
KHByb2dyYW1JZCwgc2hhZGVyVHlwZSwgc291cmNlLCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgcHJvZHVjZSBhbiBl
cnJvci4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRXJyb3I6ICIgKyBl
cnJvcik7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IkNhbnZhcy51cGRhdGVTaGFkZXIuaW52YWxpZFNoYWRlclR5cGUiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIkludmFsaWQgc2hhZGVyIHR5cGVzIHNob3VsZCBjYXVzZSBhbiBlcnJvci4iLAorICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgbGV0IHNoYWRlclByb2dy
YW0gPSBXSS5jYW52YXNNYW5hZ2VyLnNoYWRlclByb2dyYW1zWzBdOworICAgICAgICAgICAgaWYg
KCFzaGFkZXJQcm9ncmFtKSB7CisgICAgICAgICAgICAgICAgcmVqZWN0KCJNaXNzaW5nIHNoYWRl
ciBwcm9ncmFtIikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbnN0IHNoYWRlclR5cGUgPSAiSU5WQUxJRF9TSEFERVJfVFlQRSI7CisgICAg
ICAgICAgICBjb25zdCBzb3VyY2UgPSAiSU5WQUxJRF9TT1VSQ0UiOworICAgICAgICAgICAgQ2Fu
dmFzQWdlbnQudXBkYXRlU2hhZGVyKHNoYWRlclByb2dyYW0uaWRlbnRpZmllciwgc2hhZGVyVHlw
ZSwgc291cmNlLCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoZXJyb3IsICJTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4iKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGZ1bmN0aW9uIGludmFsaWRTb3VyY2VUZXN0KHtuYW1lLCBzaGFkZXJUeXBlLCBzb3VyY2V9KSB7
CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIGxldCBzaGFkZXJQ
cm9ncmFtID0gV0kuY2FudmFzTWFuYWdlci5zaGFkZXJQcm9ncmFtc1swXTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXNoYWRlclByb2dyYW0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCJN
aXNzaW5nIHNoYWRlciBwcm9ncmFtIikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIENhbnZhc0FnZW50LnVwZGF0ZVNoYWRl
cihzaGFkZXJQcm9ncmFtLmlkZW50aWZpZXIsIHNoYWRlclR5cGUsIHNvdXJjZSwgKGVycm9yKSA9
PiB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChlcnJvciwg
IlNob3VsZCBwcm9kdWNlIGVycm9yLiIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiRXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgaW52YWxpZFNvdXJjZVRlc3QoeworICAgICAgICBuYW1lOiAiQ2FudmFzLnVwZGF0
ZVNoYWRlci5pbnZhbGlkVmVydGV4U2hhZGVyU291cmNlIiwKKyAgICAgICAgc2hhZGVyVHlwZTog
Q2FudmFzQWdlbnQuU2hhZGVyVHlwZS5WZXJ0ZXgsCisgICAgICAgIHNvdXJjZTogIklOVkFMSUQi
LAorICAgIH0pOworCisgICAgaW52YWxpZFNvdXJjZVRlc3QoeworICAgICAgICBuYW1lOiAiQ2Fu
dmFzLnVwZGF0ZVNoYWRlci5pbnZhbGlkRnJhZ21lbnRTaGFkZXJTb3VyY2UiLAorICAgICAgICBz
aGFkZXJUeXBlOiBDYW52YXNBZ2VudC5TaGFkZXJUeXBlLkZyYWdtZW50LAorICAgICAgICBzb3Vy
Y2U6ICJJTlZBTElEIiwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWQoKSI+CisgICAg
PHA+VGVzdCBjb21waWxhdGlvbiBvZiBzaGFkZXJzIGFmdGVyIGJlaW5nIGF0dGFjaGVkIHRvIGEg
cHJvZ3JhbSwgd2l0aCBhbmQgd2l0aG91dCBzeW50YXggZXJyb3JzLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOGU2
NWZlOTExZjEuLjgxZTI1YWNlYjg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTkxNiw2ICsxOTE2LDcgQEAgaW5zcGVjdG9yL2NhbnZhcy9yZXNvbHZl
Q2FudmFzQ29udGV4dC13ZWJnbC5odG1sIFsgU2tpcCBdCiBpbnNwZWN0b3IvY2FudmFzL3Jlc29s
dmVDYW52YXNDb250ZXh0LXdlYmdsMi5odG1sIFsgU2tpcCBdCiBpbnNwZWN0b3IvY2FudmFzL3No
YWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJnbC5odG1sIFsgU2tpcCBdCiBpbnNwZWN0b3IvY2Fu
dmFzL3NoYWRlclByb2dyYW0tYWRkLXJlbW92ZS13ZWJnbDIuaHRtbCBbIFNraXAgXQoraW5zcGVj
dG9yL2NhbnZhcy91cGRhdGVTaGFkZXIuaHRtbCBbIFNraXAgXQogIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKICMjIyMjIyMjIyMjIyMjIyMjICAgICAgICAgIEVuZCBXZWJHTCBJc3N1ZXMgICAgICAg
ICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOWU4ZTQ2NjA4MDIuLmJiNGExYmM2NmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wOC0wOCAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2Fu
dmFzOiBzdXBwb3J0IGVkaXRpbmcgV2ViR0wgc2hhZGVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjExCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xNTQ0ODk1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0IEJha2VyLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5qc29uOgorICAgICAgICBBZGQgYHVwZGF0ZVNo
YWRlcmAgY29tbWFuZCB0aGF0IHdpbGwgY2hhbmdlIHRoZSBnaXZlbiBzaGFkZXIncyBzb3VyY2Ug
dG8gdGhlIHByb3ZpZGVkIHN0cmluZywKKyAgICAgICAgcmVjb21waWxlLCBhbmQgcmVsaW5rIGl0
IHRvIGl0cyBhc3NvY2lhdGVkIHByb2dyYW0uCisgICAgICAgIERyaXZlLWJ5OiBhZGQgZGVzY3Jp
cHRpb24gdG8gYHJlcXVlc3RTaGFkZXJTb3VyY2VgIGNvbW1hbmQuCisKIDIwMTctMDgtMDcgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCYXNlbGluZSBKSVQgc2hv
dWxkIGRvIGNhZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9wcm90b2NvbC9DYW52YXMuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvQ2FudmFzLmpzb24KaW5kZXggYmNjZjNmYzc4ZTIuLmIwMWI4MzMxODBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0NhbnZhcy5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQ2FudmFz
Lmpzb24KQEAgLTEyMiw3ICsxMjIsNyBAQAogICAgICAgICB9LAogICAgICAgICB7CiAgICAgICAg
ICAgICAibmFtZSI6ICJyZXF1ZXN0U2hhZGVyU291cmNlIiwKLSAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICIiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoZSBzb3Vy
Y2Ugb2YgdGhlIHNoYWRlciBvZiB0aGUgZ2l2ZW4gdHlwZSBmcm9tIHRoZSBwcm9ncmFtIHdpdGgg
dGhlIGdpdmVuIGlkLiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInByb2dyYW1JZCIsICIkcmVmIjogIlByb2dyYW1JZCIgfSwKICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogInNoYWRlclR5cGUiLCAiJHJlZiI6ICJTaGFkZXJUeXBlIiB9
CkBAIC0xMzAsNiArMTMwLDE1IEBACiAgICAgICAgICAgICAicmV0dXJucyI6IFsKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJzdHJpbmciIH0KICAgICAgICAg
ICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAidXBkYXRl
U2hhZGVyIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21waWxlcyBhbmQgbGlua3Mg
dGhlIHNoYWRlciB3aXRoIGlkZW50aWZpZXIgYW5kIHR5cGUgd2l0aCB0aGUgZ2l2ZW4gc291cmNl
IGNvZGUuIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAicHJvZ3JhbUlkIiwgIiRyZWYiOiAiUHJvZ3JhbUlkIiB9LAorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic2hhZGVyVHlwZSIsICIkcmVmIjogIlNoYWRlclR5cGUiIH0sCisgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2UiLCAidHlwZSI6ICJzdHJpbmciIH0KKyAgICAg
ICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCiAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBlODgzNjkxNDJhNC4uNWM4NGI0Zjc5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAor
MjAxNy0wOC0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGVkaXRpbmcgV2ViR0wgc2hhZGVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MjExCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTQ0ODk1OD4KKworICAgICAgICBSZXZpZXdlZCBieSBNYXR0
IEJha2VyLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0
bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6dXBkYXRlU2hhZGVyKToKKworICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmxpbmtQcm9ncmFtV2l0aG91dEludmFsaWRhdGluZ0F0
dHJpYkxvY2F0aW9ucyk6CisgICAgICAgIE5vcm1hbGx5LCB3aGVuIGEgcHJvZ3JhbSBpcyBsaW5r
ZWQsIGl0IGludmFsaWRhdGVzIGFueSBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBhc3NvY2lhdGVkIHdp
dGgKKyAgICAgICAgdGhlIHByb2dyYW0gYnkgaW5jcmVtZW50aW5nIGl0cyBgbGlua0NvdW50YC4g
SW4gb3JkZXIgdG8gYWxsb3cgbGl2ZSBlZGl0aW5nIG9mIHNoYWRlcnMsIHdlCisgICAgICAgIG5l
ZWQgdG8gYmUgYWJsZSB0byBjb21waWxlIGFuZCBsaW5rIGEgc2hhZGVyIHdpdGhvdXQgaW52YWxp
ZGF0aW5nIHRoZXNlIGxvY2F0aW9ucy4gVGhpcworICAgICAgICBwYXRjaCBtb3ZlcyB0aGUgc2hh
ZGVyIGxpbmtpbmcgbG9naWMgdG8gaXRzIG93biBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSBg
bGlua1Byb2dyYW1gIHNvCisgICAgICAgIHRoYXQgSW5zcGVjdG9yQ2FudmFzQWdlbnQgY2FuIGNv
bXBpbGUgYW5kIGxpbmsgd2l0aG91dCBpbnZhbGlkYXRpb24uCisKIDIwMTctMDgtMDcgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBy
ZXZpZXcgQ2FudmFzIHBhdGggd2hlbiB2aWV3aW5nIGEgcmVjb3JkaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CmluZGV4IDBmYzcxZTI3ZTBkLi4xNjk2NDI4MDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTI4
MzYsMTcgKzI4MzYsMjYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5lV2lk
dGgoR0MzRGZsb2F0IHdpZHRoKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxp
bmtQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKKyAgICBpZiAoIWxpbmtQcm9ncmFt
V2l0aG91dEludmFsaWRhdGluZ0F0dHJpYkxvY2F0aW9ucyhwcm9ncmFtKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgcHJvZ3JhbS0+aW5jcmVhc2VMaW5rQ291bnQoKTsKK30KKworYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpsaW5rUHJvZ3JhbVdpdGhvdXRJbnZhbGlkYXRpbmdBdHRy
aWJMb2NhdGlvbnMoV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQorewogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXZhbGlkYXRlV2ViR0xPYmplY3QoImxpbmtQcm9ncmFtIiwgcHJv
Z3JhbSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgV2Vi
R0xTaGFkZXIqIHZlcnRleFNoYWRlciA9IHByb2dyYW0tPmdldEF0dGFjaGVkU2hhZGVyKEdyYXBo
aWNzQ29udGV4dDNEOjpWRVJURVhfU0hBREVSKTsKICAgICBXZWJHTFNoYWRlciogZnJhZ21lbnRT
aGFkZXIgPSBwcm9ncmFtLT5nZXRBdHRhY2hlZFNoYWRlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
R01FTlRfU0hBREVSKTsKICAgICBpZiAoIXZlcnRleFNoYWRlciB8fCAhdmVydGV4U2hhZGVyLT5p
c1ZhbGlkKCkgfHwgIWZyYWdtZW50U2hhZGVyIHx8ICFmcmFnbWVudFNoYWRlci0+aXNWYWxpZCgp
IHx8ICFtX2NvbnRleHQtPnByZWNpc2lvbnNNYXRjaChvYmplY3RPclplcm8odmVydGV4U2hhZGVy
KSwgb2JqZWN0T3JaZXJvKGZyYWdtZW50U2hhZGVyKSkgfHwgIW1fY29udGV4dC0+Y2hlY2tWYXJ5
aW5nc1BhY2tpbmcob2JqZWN0T3JaZXJvKHZlcnRleFNoYWRlciksIG9iamVjdE9yWmVybyhmcmFn
bWVudFNoYWRlcikpKSB7CiAgICAgICAgIHByb2dyYW0tPnNldExpbmtTdGF0dXMoZmFsc2UpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBtX2Nv
bnRleHQtPmxpbmtQcm9ncmFtKG9iamVjdE9yWmVybyhwcm9ncmFtKSk7Ci0gICAgcHJvZ3JhbS0+
aW5jcmVhc2VMaW5rQ291bnQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBw
YXJhbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaAppbmRleCA3MGY3NmNlOWRiNC4uMmIxMzRjMjJiYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgKQEAgLTIyOCw2ICsyMjgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxpbmVXaWR0aChH
QzNEZmxvYXQpOwogICAgIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xQcm9ncmFtKik7CisgICAgYm9v
bCBsaW5rUHJvZ3JhbVdpdGhvdXRJbnZhbGlkYXRpbmdBdHRyaWJMb2NhdGlvbnMoV2ViR0xQcm9n
cmFtKik7CiAgICAgdm9pZCBwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJh
bSk7CiAgICAgdm9pZCBwb2x5Z29uT2Zmc2V0KEdDM0RmbG9hdCBmYWN0b3IsIEdDM0RmbG9hdCB1
bml0cyk7CiAgICAgdm9pZCByZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgQXJyYXlCdWZmZXJWaWV3JiBwaXhlbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggMjZlZjc4MjRmYWEuLjJiMGVlNzFm
YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAKQEAgLTI5Myw2ICsyOTMsMzcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
cmVxdWVzdFNoYWRlclNvdXJjZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFMKICNl
bmRpZgogfQogCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojp1cGRhdGVTaGFkZXIoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHByb2dyYW1JZCwgY29uc3QgU3RyaW5n
JiBzaGFkZXJUeXBlLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkKK3sKKyNpZiBFTkFCTEUoV0VCR0wp
CisgICAgYXV0byogaW5zcGVjdG9yUHJvZ3JhbSA9IGFzc2VydEluc3BlY3RvclByb2dyYW0oZXJy
b3JTdHJpbmcsIHByb2dyYW1JZCk7CisgICAgaWYgKCFpbnNwZWN0b3JQcm9ncmFtKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBzaGFkZXIgPSBpbnNwZWN0b3JQcm9ncmFtLT5zaGFkZXJG
b3JUeXBlKHNoYWRlclR5cGUpOworICAgIGlmICghc2hhZGVyKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJObyBzaGFkZXIgZm9yIGdpdmVuIHR5cGUuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0
V2ViR0wgPSBpbnNwZWN0b3JQcm9ncmFtLT5jb250ZXh0KCk7CisgICAgY29udGV4dFdlYkdMLT5z
aGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UpOworICAgIGNvbnRleHRXZWJHTC0+Y29tcGlsZVNo
YWRlcihzaGFkZXIpOworCisgICAgaWYgKCFzaGFkZXItPmlzVmFsaWQoKSkgeworICAgICAgICBl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHRXZWJHTC0+bGlua1Byb2dyYW1X
aXRob3V0SW52YWxpZGF0aW5nQXR0cmliTG9jYXRpb25zKCZpbnNwZWN0b3JQcm9ncmFtLT5wcm9n
cmFtKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbUlkKTsKKyAgICBVTlVTRURf
UEFSQU0oc2hhZGVyVHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7CisgICAgZXJyb3JT
dHJpbmcgPSBBU0NJSUxpdGVyYWwoIldlYkdMIGlzIG5vdCBzdXBwb3J0ZWQuIik7CisjZW5kaWYK
K30KKwogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZnJhbWVOYXZpZ2F0ZWQoRnJhbWUmIGZy
YW1lKQogewogICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGYxY2NmN2I0OTA3Li5h
YTEwMDQyY2I3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFJl
Y29yZGluZyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FudmFzSWQsIGNvbnN0IGJvb2wq
IGNvbnN0IHNpbmdsZUZyYW1lLCBjb25zdCBpbnQqIGNvbnN0IG1lbW9yeUxpbWl0KSBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbmNlbFJlY29yZGluZyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y2FudmFzSWQpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFNoYWRlclNvdXJjZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcHJvZ3JhbUlkLCBjb25zdCBTdHJpbmcmIHNoYWRlclR5cGUs
IFN0cmluZyopIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2hhZGVyKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwcm9ncmFtSWQsIGNvbnN0IFN0cmluZyYgc2hhZGVyVHlwZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uCiAgICAgdm9pZCBmcmFtZU5hdmlnYXRlZChGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKaW5kZXggMjE0OWM1MzMwZjEuLmIxNjFmZmU1ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wOC0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGVkaXRp
bmcgV2ViR0wgc2hhZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI0MjExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTQ0ODk1OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBNYXR0IEJha2VyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9N
b2RlbHMvU2hhZGVyUHJvZ3JhbS5qczoKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW0ucHJvdG90
eXBlLnVwZGF0ZVZlcnRleFNoYWRlcik6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtLnByb3Rv
dHlwZS51cGRhdGVGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChXSS5TaGFkZXJQcm9ncmFtLnBy
b3RvdHlwZS5fdXBkYXRlU2hhZGVyKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U2hhZGVyUHJvZ3JhbUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuU2hhZGVyUHJvZ3JhbUNv
bnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlNoYWRlclByb2dyYW1Db250ZW50Vmlldy5wcm90b3R5
cGUuX2NvbnRlbnREaWRDaGFuZ2UpOgorCiAyMDE3LTA4LTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcmV2aWV3IENhbnZhcyBw
YXRoIHdoZW4gdmlld2luZyBhIHJlY29yZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NoYWRlclByb2dyYW0uanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2hhZGVyUHJvZ3JhbS5qcwppbmRleCA3
ZWU3YThmOGVkNi4uZmRjYTU4ODMwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TaGFkZXJQcm9ncmFtLmpzCkBAIC01Nyw2
ICs1NywxNiBAQCBXSS5TaGFkZXJQcm9ncmFtID0gY2xhc3MgU2hhZGVyUHJvZ3JhbSBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICB0aGlzLl9yZXF1ZXN0U2hhZGVyU291cmNlKENhbnZhc0FnZW50
LlNoYWRlclR5cGUuRnJhZ21lbnQsIGNhbGxiYWNrKTsKICAgICB9CiAKKyAgICB1cGRhdGVWZXJ0
ZXhTaGFkZXIoc291cmNlKQorICAgIHsKKyAgICAgICAgdGhpcy5fdXBkYXRlU2hhZGVyKENhbnZh
c0FnZW50LlNoYWRlclR5cGUuVmVydGV4LCBzb3VyY2UpOworICAgIH0KKworICAgIHVwZGF0ZUZy
YWdtZW50U2hhZGVyKHNvdXJjZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNoYWRlcihD
YW52YXNBZ2VudC5TaGFkZXJUeXBlLkZyYWdtZW50LCBzb3VyY2UpOworICAgIH0KKwogICAgIC8v
IFByaXZhdGUKIAogICAgIF9yZXF1ZXN0U2hhZGVyU291cmNlKHNoYWRlclR5cGUsIGNhbGxiYWNr
KQpAQCAtNzAsNiArODAsMTMgQEAgV0kuU2hhZGVyUHJvZ3JhbSA9IGNsYXNzIFNoYWRlclByb2dy
YW0gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRlbnQpOwogICAg
ICAgICB9KTsKICAgICB9CisKKyAgICBfdXBkYXRlU2hhZGVyKHNoYWRlclR5cGUsIHNvdXJjZSkK
KyAgICB7CisgICAgICAgIENhbnZhc0FnZW50LnVwZGF0ZVNoYWRlcih0aGlzLl9pZGVudGlmaWVy
LCBzaGFkZXJUeXBlLCBzb3VyY2UsIChlcnJvcikgPT4geworICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoIWVycm9yLCBlcnJvcik7CisgICAgICAgIH0pOworICAgIH0KIH07CiAKIFdJLlNoYWRl
clByb2dyYW0uU2hhZGVyVHlwZSA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50
Vmlldy5qcwppbmRleCA0YzgwZWJkYWI5OC4uMTY3OTY5MDk1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NoYWRlclByb2dyYW1Db250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
aGFkZXJQcm9ncmFtQ29udGVudFZpZXcuanMKQEAgLTM1LDggKzM1LDEwIEBAIFdJLlNoYWRlclBy
b2dyYW1Db250ZW50VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWCiAKICAgICAgICAgbGV0IGNyZWF0ZUVkaXRvciA9IChzaGFkZXJUeXBlKSA9
PiB7CiAgICAgICAgICAgICBsZXQgdGV4dEVkaXRvciA9IG5ldyBXSS5UZXh0RWRpdG9yOworICAg
ICAgICAgICAgdGV4dEVkaXRvci5yZWFkT25seSA9IGZhbHNlOwogICAgICAgICAgICAgdGV4dEVk
aXRvci5hZGRFdmVudExpc3RlbmVyKFdJLlRleHRFZGl0b3IuRXZlbnQuRm9jdXNlZCwgdGhpcy5f
ZWRpdG9yRm9jdXNlZCwgdGhpcyk7CiAgICAgICAgICAgICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2Us
IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAg
ICB0ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGV4dEVkaXRvci5FdmVudC5Db250ZW50
RGlkQ2hhbmdlLCB0aGlzLmRlYm91bmNlKDI1MCkuX2NvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOwog
ICAgICAgICAgICAgdGV4dEVkaXRvci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNoYWRlciIpOwog
CiAgICAgICAgICAgICBsZXQgc2hhZGVyVHlwZUNvbnRhaW5lciA9IHRleHRFZGl0b3IuZWxlbWVu
dC5pbnNlcnRBZGphY2VudEVsZW1lbnQoImFmdGVyYmVnaW4iLCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSk7CkBAIC0xOTQsNCArMTk2LDEyIEBAIFdJLlNoYWRlclByb2dyYW1Db250ZW50
VmlldyA9IGNsYXNzIFNoYWRlclByb2dyYW1Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
CiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50
Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UpOwogICAgIH0KKworICAg
IF9jb250ZW50RGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdl
dCA9PT0gdGhpcy5fdmVydGV4RWRpdG9yKQorICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC51cGRhdGVWZXJ0ZXhTaGFkZXIodGhpcy5fdmVydGV4RWRpdG9yLnN0cmluZyk7CisgICAg
ICAgIGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZnJhZ21lbnRFZGl0b3IpCisgICAg
ICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVwZGF0ZUZyYWdtZW50U2hhZGVyKHRoaXMu
X2ZyYWdtZW50RWRpdG9yLnN0cmluZyk7CisgICAgfQogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>