<?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>25419</bug_id>
          
          <creation_ts>2009-04-27 04:29:23 -0700</creation_ts>
          <short_desc>InspectorController refactoring proposal</short_desc>
          <delta_ts>2011-04-27 03:24:16 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://docs.google.com/Doc?id=dcf65mvz_0dp6xt4c8</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>20031</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>emacemac7</cc>
    
    <cc>jamesr</cc>
    
    <cc>michaeln</cc>
    
    <cc>nickshanks</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>118962</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-04-27 04:29:23 -0700</bug_when>
    <thetext>I started putting up a proposal for the InspectorController refactoring. I did not want to post it in here since I wanted some color-coding and some comment capabilities. Please tell me if this works for you, otherwise I will re-post it in here. Anyway, here is the link:

http://docs.google.com/Doc?id=dcf65mvz_0dp6xt4c8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119174</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-04-28 15:01:14 -0700</bug_when>
    <thetext>Hi Timothy,

Did you have a chance to look at this? If it sounds good I will start sending patches your way.

Thanks
Pavel
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119201</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-04-28 16:26:16 -0700</bug_when>
    <thetext>I would encourage doing this a bit more piecemeal.  My preference would be to see the most important part, the proxy layer, added first, using the current API. Is there a reason the re-factoring needs to come before the proxy layer?  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119270</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-04-28 22:50:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I would encourage doing this a bit more piecemeal.  My preference would be to
&gt; see the most important part, the proxy layer, added first, using the current
&gt; API. Is there a reason the re-factoring needs to come before the proxy layer?  
&gt; 

That is exactly the plan. The thing is that refactoring suggested in step (1) is really small, but allows to narrow the proxy API significantly (proxy will not need to support JS objects instantiation after it). Let me add a step 1.5 where explicit proxy interface is being defined that will encapsulate serialization taking place in further steps. Is that what you are suggesting?

But in either case, proxy needs to operate serialized values and that is where step (2) becomes necessary. Then one will need to dispatch serialized messages and step (3) is a proposal on how it should be handled.

I would like to agree on the overall plan before I start doing anything. Beside the high level agreement, I need things like a green light on adding &apos;value&apos; and JSON serialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119464</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-30 08:55:49 -0700</bug_when>
    <thetext>I think a good approach would be to do step 1 (and maybe 2) now using the existing direct JS call approach. That way we know how well it works early on.

Basically I think we should do each separable step in stages and land them.

It would also be best to have separate patches for JSON with standalone tests. But maybe bug 20031 will give us the right JSON code.

Over all I think the proposal makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119472</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-04-30 09:19:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think a good approach would be to do step 1 (and maybe 2) now using the
&gt; existing direct JS call approach. That way we know how well it works early on.
&gt; 
&gt; Basically I think we should do each separable step in stages and land them.
&gt; 
&gt; It would also be best to have separate patches for JSON with standalone tests.
&gt; But maybe bug 20031 will give us the right JSON code.
&gt; 
&gt; Over all I think the proposal makes sense.
&gt; 

Ok, sure, let us start with step 1 and see how it goes. Actually, step 2 without migrating to Values is pretty much a noop. It would be great if 20031 addressed it, but as I understand, it is going to be resolved in JSC terms. Hence we would still need to find a platform (JS core)-independent serialization engine.

We could try doing it from within JS: InspectorController receives a network event (didReceiveResponse), it passes it into javascript for serialization by means of Scrip* objects, javascript code serializes message. Quite an indirection, but no code duplication in the JSON serialization area. Also could have some performance implications. Do you think it is better than pulling Value/JSONReader/JSONWriter in? I think I can run some experiments on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119484</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-30 10:26:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Ok, sure, let us start with step 1 and see how it goes. Actually, step 2
&gt; without migrating to Values is pretty much a noop. It would be great if 20031
&gt; addressed it, but as I understand, it is going to be resolved in JSC terms.
&gt; Hence we would still need to find a platform (JS core)-independent
&gt; serialization engine.
&gt; 
&gt; We could try doing it from within JS: InspectorController receives a network
&gt; event (didReceiveResponse), it passes it into javascript for serialization by
&gt; means of Scrip* objects, javascript code serializes message. Quite an
&gt; indirection, but no code duplication in the JSON serialization area. Also could
&gt; have some performance implications. Do you think it is better than pulling
&gt; Value/JSONReader/JSONWriter in? I think I can run some experiments on it.

We don&apos;t want two separate JSON implementations in WebKit. Bug 20031 is adding one to JSC, where it belongs. We don&apos;t want a seperate one up in WebCore just for the Inspector. What we could do is have JSON bridging classes like the Script classes Dimitri has added. So the Inspector can work with V8 or JSC&apos;s JSON parser/writer without tons of #ifdefs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119498</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-04-30 12:05:30 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Ok, sure, let us start with step 1 and see how it goes. Actually, step 2
&gt; &gt; without migrating to Values is pretty much a noop. It would be great if 20031
&gt; &gt; addressed it, but as I understand, it is going to be resolved in JSC terms.
&gt; &gt; Hence we would still need to find a platform (JS core)-independent
&gt; &gt; serialization engine.
&gt; &gt; 
&gt; &gt; We could try doing it from within JS: InspectorController receives a network
&gt; &gt; event (didReceiveResponse), it passes it into javascript for serialization by
&gt; &gt; means of Scrip* objects, javascript code serializes message. Quite an
&gt; &gt; indirection, but no code duplication in the JSON serialization area. Also could
&gt; &gt; have some performance implications. Do you think it is better than pulling
&gt; &gt; Value/JSONReader/JSONWriter in? I think I can run some experiments on it.
&gt; 
&gt; We don&apos;t want two separate JSON implementations in WebKit. Bug 20031 is adding
&gt; one to JSC, where it belongs. We don&apos;t want a seperate one up in WebCore just
&gt; for the Inspector. What we could do is have JSON bridging classes like the
&gt; Script classes Dimitri has added. So the Inspector can work with V8 or JSC&apos;s
&gt; JSON parser/writer without tons of #ifdefs.
&gt; 

Ok, I did not realize that ScriptObject is that mature already. Here is the new plan then:

- I am substituting Value with ScriptObject in the design doc
- ScriptObject gets &quot;String ScriptObject::stringify&quot; and a factory &quot;parse&quot; method.
- Both WebKit and Chromium use native JSON serialization behind the scenes.

Does this sound good to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119501</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-30 12:12:58 -0700</bug_when>
    <thetext>That sounds good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120637</commentid>
    <comment_count>9</comment_count>
      <attachid>30186</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-11 05:49:29 -0700</bug_when>
    <thetext>Created attachment 30186
patch

Patch with the first step of the refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120638</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-11 05:51:13 -0700</bug_when>
    <thetext>Sending you the first patch for review (2 more to follow).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120689</commentid>
    <comment_count>11</comment_count>
      <attachid>30186</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-11 10:07:11 -0700</bug_when>
    <thetext>Comment on attachment 30186
patch

I like this patch and it is a nice and mechanical change. I have a few comments and nitpicks, but over all nothing major.

There are a couple of tab characters sprinkled in this patch. Please remove them, otherwise it will fail to commit.

&gt; +    , m_bound(false)

I prefer the m_scriptObjectCreated variable name you used for InspectorResource over m_bound.

&gt; +    initBody: function(args)

I think setMessageBody would be a better name.

r- for the tabs. But please consider the other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120697</commentid>
    <comment_count>12</comment_count>
      <attachid>30194</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-11 11:07:44 -0700</bug_when>
    <thetext>Created attachment 30194
patch

Addressed Timothy&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120892</commentid>
    <comment_count>13</comment_count>
      <attachid>30240</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-12 10:23:04 -0700</bug_when>
    <thetext>Created attachment 30240
step_2_patch

This patch wraps ScriptObject and ScriptState* or further serialization in InspectorFrontend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120921</commentid>
    <comment_count>14</comment_count>
      <attachid>30240</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-12 12:42:00 -0700</bug_when>
    <thetext>Comment on attachment 30240
step_2_patch

This patch does not include the JsonObject files. 

Also JsonObject should be named JSONObject per our style guidelines. (&quot;Capitalize the first letter, including all letters in an acronym, in a class, struct, protocol, or namespace name.&quot;)

 80     addDOMStorage.appendArgument(jsonObject.scriptObject());

I assume that scriptObject returns a string with the serialized JSON. If so maybe including &quot;serialized&quot; in the function would make things clear.

Wont this require changes on the ForntEnd side too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121025</commentid>
    <comment_count>15</comment_count>
      <attachid>30273</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-13 06:42:54 -0700</bug_when>
    <thetext>Created attachment 30273
step_2_patch

&gt;&gt; Also JsonObject should be named JSONObject per our style guidelines.
&gt;&gt; (&quot;Capitalize the first letter, including all letters in an acronym, 
&gt;&gt; in a class, struct, protocol, or namespace name.&quot;)

Done.

&gt;&gt; 80     addDOMStorage.appendArgument(jsonObject.scriptObject());
&gt;&gt; I assume that scriptObject returns a string with the serialized JSON.
&gt;&gt; If so maybe including &quot;serialized&quot; in the function would make things clear.

Not yet - it is returning underlying script object so far. It will have &apos;stringify&apos; and &apos;parse&apos; later.

&gt;&gt; Wont this require changes on the ForntEnd side too?

Again, not yet.

Sorry about missing JSON* files - fell off my git cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121026</commentid>
    <comment_count>16</comment_count>
      <attachid>30274</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-13 06:45:10 -0700</bug_when>
    <thetext>Created attachment 30274
step_2_patch

(fixed missed rename in WebCore.pro).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121037</commentid>
    <comment_count>17</comment_count>
      <attachid>30277</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-13 08:42:26 -0700</bug_when>
    <thetext>Created attachment 30277
step_3_patch

Split InspectorController into InspectorController and InspectorFrontend. Latter encapsulates all frontend interaction and is the only entity allowed to make ScriptFunctionCalls. The further plan is to serialize these script function calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121049</commentid>
    <comment_count>18</comment_count>
      <attachid>30277</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-13 09:54:37 -0700</bug_when>
    <thetext>Comment on attachment 30277
step_3_patch

 66     m_webInspector = ScriptObject();

It seems odd to create a new object during destruction. Is there a better way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121052</commentid>
    <comment_count>19</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-13 10:12:18 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 30277 [review])
&gt;  66     m_webInspector = ScriptObject();
&gt; 
&gt; It seems odd to create a new object during destruction. Is there a better way
&gt; to do this?
&gt; 

ScriptObject is supposed to be just a handle. And it is no change from what it was (see InspectorController:637). But I agree that it looks weird, so will look for better way in the meanwhile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121455</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-15 00:47:31 -0700</bug_when>
    <thetext>It looks like these are something for Timothy to land.  Assigning to him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121498</commentid>
    <comment_count>21</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-15 06:23:14 -0700</bug_when>
    <thetext>These are not ready to land, they are steps that all need landed together to prevent breaking the Inspector. There are more steps to come and I assume someone at Google will land them when they are all done and reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121503</commentid>
    <comment_count>22</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-15 06:30:14 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; These are not ready to land, they are steps that all need landed together to
&gt; prevent breaking the Inspector. There are more steps to come and I assume
&gt; someone at Google will land them when they are all done and reviewed.
&gt; 

Timothy, these three are self-contained and are not breaking. I am currently working on ScriptArray and JSONMessage for further serialization.

I think it would be nice if these were landed so that we avoid potential merging. And I think that landing person should be either Dmitry or yourself so that you can see if anything goes wrong. Or make me a committer so that I could baby-sit it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121505</commentid>
    <comment_count>23</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-05-15 06:36:00 -0700</bug_when>
    <thetext>OK, that is good. I guess deep down I knew that, but wasn&apos;t thinking.

I wont be able to land them today, due to other priorities. But feel free to get someone else to. Dimitri?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121507</commentid>
    <comment_count>24</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-15 06:53:22 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; OK, that is good. I guess deep down I knew that, but wasn&apos;t thinking.
&gt; 
&gt; I wont be able to land them today, due to other priorities. But feel free to
&gt; get someone else to. Dimitri?
&gt; 

No worries, this is not urgent at all. I&apos;ll ping Dmitry/yourself in some time again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121526</commentid>
    <comment_count>25</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-15 09:16:17 -0700</bug_when>
    <thetext>I&apos;ll land. Can we do this Monday morning (PST), so that you (Pavel) could watch the tree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121546</commentid>
    <comment_count>26</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-15 11:17:06 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I&apos;ll land. Can we do this Monday morning (PST), so that you (Pavel) could watch
&gt; the tree?
&gt; 

SGTM, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121915</commentid>
    <comment_count>27</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-19 09:08:36 -0700</bug_when>
    <thetext>Patch 1 landed as http://trac.webkit.org/changeset/43859.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121918</commentid>
    <comment_count>28</comment_count>
      <attachid>30274</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-19 09:15:08 -0700</bug_when>
    <thetext>Comment on attachment 30274
step_2_patch

Second patch bit-rotted. Pavel uploading a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121924</commentid>
    <comment_count>29</comment_count>
      <attachid>30475</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-19 09:36:57 -0700</bug_when>
    <thetext>Created attachment 30475
step_2_patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121925</commentid>
    <comment_count>30</comment_count>
      <attachid>30475</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-19 09:37:35 -0700</bug_when>
    <thetext>Comment on attachment 30475
step_2_patch

transferring xenon&apos;s review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121927</commentid>
    <comment_count>31</comment_count>
      <attachid>30477</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-19 09:40:56 -0700</bug_when>
    <thetext>Created attachment 30477
step_2_patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121928</commentid>
    <comment_count>32</comment_count>
      <attachid>30478</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-05-19 09:44:14 -0700</bug_when>
    <thetext>Created attachment 30478
step_3_patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121929</commentid>
    <comment_count>33</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-19 09:46:29 -0700</bug_when>
    <thetext>Step 2 landed as http://trac.webkit.org/changeset/43861.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121931</commentid>
    <comment_count>34</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-19 09:59:08 -0700</bug_when>
    <thetext>Step 3 landed as http://trac.webkit.org/changeset/43864.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30186</attachid>
            <date>2009-05-11 05:49:29 -0700</date>
            <delta_ts>2009-05-11 11:07:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>jsobj_instantiation.txt</filename>
            <type>text/plain</type>
            <size>31824</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGNjYzgwZC4uMGMxOWM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAwOS0wNS0xMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBJbnBlY3RvckNvbnRyb2xsZXIgc28gdGhhdCBp
dCBkb2VzIG5vdCBpbnN0YW50aWF0ZSByZXNvdXJjZS9jb25zb2xlL2RhdGFiYXNlL2RvbXJlc291
cmNlIGphdmFzY3JpcHQgb2JqZWN0cy4gTW92ZSBpbnN0YW50aWF0aW9uIGludG8gdGhlIGphdmFz
Y3JpcHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NDE5CisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvQ29uc29sZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdElt
cG9ydGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6SW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2U6OnVuYmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlOjp1bmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0b3JSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUhlYWRlcnNPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci51cGRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVtb3ZlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5hZGRET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuYWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMDktMDUtMTAgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggYzgz
MmE0Yy4uZjNjNTg0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtNzYs
MzEgKzc2LDI2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
IHMsIE1lc3NhZ2VMZXZlbCBsLCBTY3JpcHRDYWxsU3RhY2sqCiAKIHZvaWQgQ29uc29sZU1lc3Nh
Z2U6OmFkZFRvQ29uc29sZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdE9i
amVjdCYgd2ViSW5zcGVjdG9yKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBtZXNzYWdlQ29u
c3RydWN0b3Ioc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgIkNvbnNvbGVNZXNzYWdlIik7Ci0g
ICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4obV9zb3VyY2UpKTsKLSAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtX2xldmVsKSk7Ci0gICAgbWVzc2FnZUNvbnN0cnVj
dG9yLmFwcGVuZEFyZ3VtZW50KG1fbGluZSk7Ci0gICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFwcGVu
ZEFyZ3VtZW50KG1fdXJsKTsKLSAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQo
bV9ncm91cExldmVsKTsKLSAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9y
ZXBlYXRDb3VudCk7Ci0KKyAgICBTY3JpcHRPYmplY3QgbWVzc2FnZU9iaiA9IFNjcmlwdE9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0
ZSwgInNvdXJjZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsKKyAgICBtZXNzYWdlT2Jq
LnNldChzY3JpcHRTdGF0ZSwgImxldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7Cisg
ICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsaW5lIiwgc3RhdGljX2Nhc3Q8aW50Piht
X2xpbmUpKTsKKyAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInVybCIsIG1fdXJsKTsK
KyAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOworICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0YXRlLCAi
cmVwZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKKyAgICAKKyAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oc2NyaXB0U3RhdGUsIHdlYkluc3BlY3Rvciwg
ImFkZE1lc3NhZ2VUb0NvbnNvbGUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNz
YWdlT2JqKTsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtZXNz
YWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9mcmFtZXNbaV0pOworICAgICAgICAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobV9mcmFtZXNbaV0pOwogICAgIH0gZWxzZSBpZiAoIW1f
d3JhcHBlZEFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fd3JhcHBlZEFyZ3VtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1lc3Nh
Z2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChtX3dyYXBwZWRBcmd1bWVudHNbaV0pOwotICAg
IH0gZWxzZQotICAgICAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9tZXNz
YWdlKTsKLQotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0T2JqZWN0
IG1lc3NhZ2UgPSBtZXNzYWdlQ29uc3RydWN0b3IuY29uc3RydWN0KGhhZEV4Y2VwdGlvbiwgZmFs
c2UpOwotICAgIGlmIChoYWRFeGNlcHRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBhZGRNZXNzYWdlVG9Db25zb2xlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0
b3IsICJhZGRNZXNzYWdlVG9Db25zb2xlIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZS5hcHBl
bmRBcmd1bWVudChtZXNzYWdlKTsKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlLmNhbGwoaGFkRXhj
ZXB0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtX3dy
YXBwZWRBcmd1bWVudHNbaV0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG1fbWVzc2FnZSk7CisgICAgfQorICAgIGZ1bmN0aW9uLmNhbGwoKTsKIH0KIAog
Ym9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChTY3JpcHRTdGF0ZSogc3RhdGUsIENvbnNvbGVN
ZXNzYWdlKiBtc2cpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IGQxYTk1ODQuLmI5ZGViY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW4KICAgICByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAKICAgICBpZiAo
d2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
c2NyaXB0U3RhdGUpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fc2Ny
aXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQpAQCAtOTA0LDcgKzkwNCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nCiAgICAgcmVzb3VyY2UtPmFkZExlbmd0aChsZW5ndGhSZWNlaXZl
ZCk7CiAKICAgICBpZiAod2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRl
U2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2Ny
aXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKHdpbmRv
d1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3Njcmlw
dFN0YXRlKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3NjcmlwdFN0
YXRlLCBtX3dlYkluc3BlY3Rvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
RmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImIC8qZXJyb3IqLykKQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaQogICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsKIAogICAg
IGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmpl
Y3QobV9zY3JpcHRTdGF0ZSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQpAQCAtOTU4LDcgKzk1
OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgcmVzb3VyY2UtPnNldFhNTEh0dHBS
ZXNwb25zZVRleHQoc291cmNlU3RyaW5nKTsKIAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0g
ICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSk7CisgICAg
ICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNw
ZWN0b3IpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCkBAIC05
NzUsNyArOTc1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRJbXBvcnRlZCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXNvdXJjZS0+c2V0
WE1MSHR0cFJlc3BvbnNlVGV4dChTY3JpcHRTdHJpbmcoc291cmNlU3RyaW5nKSk7CiAgICAgCiAg
ICAgaWYgKHdpbmRvd1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9i
amVjdChtX3NjcmlwdFN0YXRlKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rvcik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKaW5kZXggMzNkMDM2ZS4u
NzljYWUxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
UmVzb3VyY2UuY3BwCkBAIC00OCw2ICs0OCw3IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKFN0b3JhZ2UqIGRvbVN0b3JhZ2UsIGJvCiAg
ICAgOiBtX2RvbVN0b3JhZ2UoZG9tU3RvcmFnZSkKICAgICAsIG1faXNMb2NhbFN0b3JhZ2UoaXNM
b2NhbFN0b3JhZ2UpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9ib3VuZChmYWxzZSkK
IHsKIH0KIApAQCAtNTgsMzYgKzU5LDMwIEBAIGJvb2wgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlOjppc1NhbWVIb3N0QW5kVHlwZShGcmFtZSogZnJhbWUsIGJvb2wgaXNMb2NhbFN0CiAKIHZv
aWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAgaWYgKCFtX3Nj
cmlwdE9iamVjdC5oYXNOb1ZhbHVlKCkpCisgICAgaWYgKG1fYm91bmQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSk7CiAgICAgQVNTRVJUKCF3ZWJJbnNwZWN0b3Iu
aGFzTm9WYWx1ZSgpKTsKICAgICBpZiAoIXNjcmlwdFN0YXRlIHx8IHdlYkluc3BlY3Rvci5oYXNO
b1ZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZXNv
dXJjZUNvbnN0cnVjdG9yKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJET01TdG9yYWdlIik7
CisgICAgCXJldHVybjsKKyAgICAKKyAgICBTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0ID0gU2Ny
aXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwogICAgIFNjcmlwdE9iamVjdCBkb21T
dG9yYWdlOwogICAgIGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9mcmFtZS5nZXQo
KSwgbV9kb21TdG9yYWdlLmdldCgpLCBkb21TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuOworICAg
IHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkb21TdG9yYWdlIiwgZG9tU3RvcmFnZSk7
CisgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImhvc3QiLCBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCkpOworICAgIHNjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJpc0xvY2FsU3RvcmFnZSIsIG1faXNMb2NhbFN0b3JhZ2UpOwogCi0gICAg
cmVzb3VyY2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChkb21TdG9yYWdlKTsKLSAgICByZXNv
dXJjZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmhvc3QoKSk7Ci0gICAgcmVzb3VyY2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1
bWVudChtX2lzTG9jYWxTdG9yYWdlKTsKLQotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7
Ci0gICAgbV9zY3JpcHRPYmplY3QgPSByZXNvdXJjZUNvbnN0cnVjdG9yLmNvbnN0cnVjdChoYWRF
eGNlcHRpb24pOwotICAgIGlmIChoYWRFeGNlcHRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGRET01TdG9yYWdlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0
b3IsICJhZGRET01TdG9yYWdlIik7Ci0gICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVudCht
X3NjcmlwdE9iamVjdCk7Ci0gICAgYWRkRE9NU3RvcmFnZS5jYWxsKGhhZEV4Y2VwdGlvbik7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGFkZERPTVN0b3JhZ2Uoc2NyaXB0U3RhdGUsIHdlYkluc3Bl
Y3RvciwgImFkZERPTVN0b3JhZ2UiKTsJCisgICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVu
dChzY3JpcHRPYmplY3QpOwkKKyAgICBhZGRET01TdG9yYWdlLmNhbGwoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6OnVuYmluZCgpCiB7Ci0gICAgbV9zY3JpcHRPYmpl
Y3QgPSBTY3JpcHRPYmplY3QoKTsKKyAgICBtX2JvdW5kID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZVJlc291cmNlLmgKaW5kZXggYWQzZTE5Ni4uNjBlNzRlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgKQEAgLTYxLDEyICs2MSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
KFN0b3JhZ2UqLCBib29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSopOwogCi0gICAgICAgIFNjcmlw
dE9iamVjdCBtX3NjcmlwdE9iamVjdDsKICAgICAgICAgUmVmUHRyPFN0b3JhZ2U+IG1fZG9tU3Rv
cmFnZTsKICAgICAgICAgYm9vbCBtX2lzTG9jYWxTdG9yYWdlOwogICAgICAgICBSZWZQdHI8RnJh
bWU+IG1fZnJhbWU7CisgICAgICAgIGJvb2wgbV9ib3VuZDsKIAotICAgIHByaXZhdGU6CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAppbmRleCA0M2NkOGVmLi4zMzFlMTlhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtNDYs
NDIgKzQ2LDM3IEBAIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6Okluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UoRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTCiAgICAgLCBtX2RvbWFpbihkb21h
aW4pCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICwg
bV9ib3VuZChmYWxzZSkKIHsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpi
aW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNw
ZWN0b3IpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdE9iamVjdC5oYXNOb1ZhbHVlKCkpCisgICAgaWYg
KG1fYm91bmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChzY3JpcHRTdGF0ZSk7CiAg
ICAgQVNTRVJUKCF3ZWJJbnNwZWN0b3IuaGFzTm9WYWx1ZSgpKTsKICAgICBpZiAoIXNjcmlwdFN0
YXRlIHx8IHdlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAJ
cmV0dXJuOwogCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlc291cmNlQ29uc3RydWN0b3Ioc2Ny
aXB0U3RhdGUsIHdlYkluc3BlY3RvciwgIkRhdGFiYXNlIik7CisgICAgU2NyaXB0T2JqZWN0IHNj
cmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBT
Y3JpcHRPYmplY3QgZGF0YWJhc2U7CiAgICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVj
dChtX2RhdGFiYXNlLmdldCgpLCBkYXRhYmFzZSkpCiAgICAgICAgIHJldHVybjsKLQotICAgIHJl
c291cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQoZGF0YWJhc2UpOwotICAgIHJlc291cmNl
Q29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9kb21haW4pOwotICAgIHJlc291cmNlQ29uc3Ry
dWN0b3IuYXBwZW5kQXJndW1lbnQobV9uYW1lKTsKLSAgICByZXNvdXJjZUNvbnN0cnVjdG9yLmFw
cGVuZEFyZ3VtZW50KG1fdmVyc2lvbik7Ci0KLSAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNl
OwotICAgIG1fc2NyaXB0T2JqZWN0ID0gcmVzb3VyY2VDb25zdHJ1Y3Rvci5jb25zdHJ1Y3QoaGFk
RXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQotICAgICAgICByZXR1cm47Ci0KKyAg
ICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGF0YWJhc2UiLCBkYXRhYmFzZSk7Cisg
ICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFpbiIsIG1fZG9tYWluKTsKKyAg
ICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibmFtZSIsIG1fbmFtZSk7CisgICAgc2Ny
aXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInZlcnNpb24iLCBtX3ZlcnNpb24pOworICAgIAog
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGREYXRhYmFzZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVj
dG9yLCAiYWRkRGF0YWJhc2UiKTsKLSAgICBhZGREYXRhYmFzZS5hcHBlbmRBcmd1bWVudChtX3Nj
cmlwdE9iamVjdCk7Ci0gICAgYWRkRGF0YWJhc2UuY2FsbChoYWRFeGNlcHRpb24pOworICAgIGFk
ZERhdGFiYXNlLmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVjdCk7CQorICAgIGFkZERhdGFiYXNl
LmNhbGwoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjp1bmJpbmQoKQog
ewotICAgIG1fc2NyaXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7CisgICAgbV9ib3VuZCA9IGZh
bHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKaW5kZXggMWJlMjMzNC4uNTEyMzZkYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaApAQCAtNTUsMTIg
KzU1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwotICAgICAgICBTY3Jp
cHRPYmplY3QgbV9zY3JpcHRPYmplY3Q7Ci0KKyAgICAgICAgCiAgICAgICAgIFJlZlB0cjxEYXRh
YmFzZT4gbV9kYXRhYmFzZTsKICAgICAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgICAgICBTdHJp
bmcgbV9uYW1lOwogICAgICAgICBTdHJpbmcgbV92ZXJzaW9uOworICAgICAgICBib29sIG1fYm91
bmQ7CisKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggMWVkMzc2ZC4uZDQwOTRhYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtNDcsNiArNDcsNyBAQCBJbnNwZWN0b3JS
ZXNvdXJjZTo6SW5zcGVjdG9yUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50
TG9hZGVyKiBsb2FkZQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2xv
YWRlcihsb2FkZXIpCiAgICAgLCBtX2ZyYW1lKGxvYWRlci0+ZnJhbWUoKSkKKyAgICAsIG1fc2Ny
aXB0T2JqZWN0Q3JlYXRlZChmYWxzZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKDAp
CiAgICAgLCBtX2NhY2hlZChmYWxzZSkKICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCkBAIC0xMDQs
NTggKzEwNSw0NiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFu
Z2UpOwogfQogCi1zdGF0aWMgU2NyaXB0T2JqZWN0IGNyZWF0ZUhlYWRlcnNPYmplY3QoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGhh
ZEV4Y2VwdGlvbikKK3N0YXRpYyB2b2lkIHBvcHVsYXRlSGVhZGVyc09iamVjdChTY3JpcHRTdGF0
ZSogc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBoZWFkZXJzKQogewotICAgIFNjcmlwdE9iamVjdCBvYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNy
ZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gaGVhZGVycy5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYg
KCFvYmplY3Quc2V0KHNjcmlwdFN0YXRlLCBpdC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5zZWNvbmQp
KSB7Ci0gICAgICAgICAgICBoYWRFeGNlcHRpb24gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KKyAgICAgICAgb2JqZWN0LT5zZXQoc2NyaXB0U3RhdGUsIGl0LT5maXJzdC5z
dHJpbmcoKSwgaXQtPnNlY29uZCk7CiAgICAgfQotCi0gICAgcmV0dXJuIG9iamVjdDsKIH0KIAog
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAgaWYg
KG1fc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwotCi0gICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZXNvdXJjZUNvbnN0cnVj
dG9yKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJSZXNvdXJjZSIpOwotICAgICAgICBTY3Jp
cHRPYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzT2JqZWN0KHNjcmlwdFN0YXRl
LCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMsIGhhZEV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChoYWRF
eGNlcHRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzb3VyY2VDb25zdHJ1
Y3Rvci5hcHBlbmRBcmd1bWVudChyZXF1ZXN0SGVhZGVycyk7Ci0gICAgICAgIHJlc291cmNlQ29u
c3RydWN0b3IuYXBwZW5kQXJndW1lbnQocmVxdWVzdFVSTCgpKTsKLSAgICAgICAgcmVzb3VyY2VD
b25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChtX3JlcXVlc3RVUkwuaG9zdCgpKTsKLSAgICAgICAg
cmVzb3VyY2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChtX3JlcXVlc3RVUkwucGF0aCgpKTsK
LSAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChtX3JlcXVlc3RVUkwu
bGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5k
QXJndW1lbnQobV9pZGVudGlmaWVyKTsKLSAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3Rvci5hcHBl
bmRBcmd1bWVudChtX2lzTWFpblJlc291cmNlKTsKLSAgICAgICAgcmVzb3VyY2VDb25zdHJ1Y3Rv
ci5hcHBlbmRBcmd1bWVudChtX2NhY2hlZCk7Ci0KLSAgICAgICAgbV9zY3JpcHRPYmplY3QgPSBy
ZXNvdXJjZUNvbnN0cnVjdG9yLmNvbnN0cnVjdChoYWRFeGNlcHRpb24pOwotICAgICAgICBpZiAo
aGFkRXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKCFtX3NjcmlwdE9i
amVjdENyZWF0ZWQpIHsKKyAgICAJYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKKworICAgICAg
ICBTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2Ny
aXB0U3RhdGUpOworICAgICAgICBTY3JpcHRPYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBTY3JpcHRP
YmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIHBvcHVsYXRlSGVhZGVyc09i
amVjdChzY3JpcHRTdGF0ZSwgJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMp
OworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdEhlYWRlcnMi
LCByZXF1ZXN0SGVhZGVycyk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUs
ICJyZXF1ZXN0VVJMIiwgcmVxdWVzdFVSTCgpKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChz
Y3JpcHRTdGF0ZSwgImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKKyAgICAgICAgc2NyaXB0
T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKKyAg
ICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImxhc3RQYXRoQ29tcG9uZW50Iiwg
bV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAiaXNNYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKKyAg
ICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImNhY2hlZCIsIG1fY2FjaGVkKTsK
KyAgICAgICAgCiAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGRSZXNvdXJjZShzY3JpcHRT
dGF0ZSwgd2ViSW5zcGVjdG9yLCAiYWRkUmVzb3VyY2UiKTsKLSAgICAgICAgYWRkUmVzb3VyY2Uu
YXBwZW5kQXJndW1lbnQobV9zY3JpcHRPYmplY3QpOworICAgICAgICBhZGRSZXNvdXJjZS5hcHBl
bmRBcmd1bWVudChtX2lkZW50aWZpZXIpOworICAgICAgICBhZGRSZXNvdXJjZS5hcHBlbmRBcmd1
bWVudChzY3JpcHRPYmplY3QpOwogICAgICAgICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlv
bik7CiAgICAgICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAg
ICAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKICAgICAgICAgbV9jaGFuZ2VzLmNs
ZWFyKFJlcXVlc3RDaGFuZ2UpOwogICAgIH0KLQotICAgIHVwZGF0ZVNjcmlwdE9iamVjdChzY3Jp
cHRTdGF0ZSk7CisgICAgdXBkYXRlU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0
b3IpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2Ny
aXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3
ZWJJbnNwZWN0b3IpCiB7Ci0gICAgaWYgKG1fc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKKyAg
ICBpZiAoIW1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fY2hhbmdlcy5oYXNDaGFuZ2UoTm9DaGFuZ2UpKQpAQCAtMTYzLDk2ICsxNTIsODEgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSkKIAogICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CiAKKyAgICBTY3JpcHRP
YmplY3Qgc2NyaXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUp
OwogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVlc3RDaGFuZ2UpKSB7Ci0gICAgICAg
IGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAidXJsIiwgcmVxdWVzdFVSTCgp
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0LnNl
dChzY3JpcHRTdGF0ZSwgImRvbWFpbiIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhDb21w
b25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gY3JlYXRlSGVh
ZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgbV9yZXF1ZXN0SGVhZGVyRmllbGRzLCBoYWRFeGNlcHRp
b24pOwotICAgICAgICBpZiAoaGFkRXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdEhlYWRl
cnMiLCByZXF1ZXN0SGVhZGVycykpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KCFtX3NjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJtYWluUmVzb3VyY2UiLCBtX2lzTWFp
blJlc291cmNlKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNl
dChzY3JpcHRTdGF0ZSwgInVybCIsIHJlcXVlc3RVUkwoKSk7CisgICAgICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJkb21haW4iLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKKyAgICAg
ICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0
aCgpKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImxhc3RQYXRoQ29t
cG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAgICBTY3Jp
cHRPYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRT
dGF0ZSk7CisgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgJnJlcXVl
c3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOworICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7CisgICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJtYWluUmVzb3VyY2UiLCBtX2lzTWFp
blJlc291cmNlKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRpZFJl
cXVlc3RDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5n
ZShSZXNwb25zZUNoYW5nZSkpIHsKLSAgICAgICAgaWYgKCFtX3NjcmlwdE9iamVjdC5zZXQoc2Ny
aXB0U3RhdGUsICJtaW1lVHlwZSIsIG1fbWltZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3VnZ2VzdGVk
RmlsZW5hbWUiLCBtX3N1Z2dlc3RlZEZpbGVuYW1lKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImV4cGVjdGVkQ29u
dGVudExlbmd0aCIsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInN0YXR1
c0NvZGUiLCBtX3Jlc3BvbnNlU3RhdHVzQ29kZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaWYgKCFtX3NjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJzdWdnZXN0ZWRGaWxl
bmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzT2JqZWN0KHNj
cmlwdFN0YXRlLCBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzLCBoYWRFeGNlcHRpb24pOwotICAgICAg
ICBpZiAoaGFkRXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICgh
bV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9u
c2VIZWFkZXJzKSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNl
dChzY3JpcHRTdGF0ZSwgIm1pbWVUeXBlIiwgbV9taW1lVHlwZSk7CisgICAgICAgIHNjcmlwdE9i
amVjdC5zZXQoc2NyaXB0U3RhdGUsICJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmls
ZW5hbWUpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZXhwZWN0ZWRD
b250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhdHVzQ29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2Rl
KTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVu
YW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25z
ZUhlYWRlcnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAg
IHBvcHVsYXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgJnJlc3BvbnNlSGVhZGVycywgbV9y
ZXNwb25zZUhlYWRlckZpZWxkcyk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3Rh
dGUsICJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOworICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9
CiAKLSAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShUeXBlQ2hhbmdlKSAmJiAhbV9zY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAidHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKExlbmd0aENo
YW5nZSkgJiYgIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImNvbnRlbnRMZW5ndGgi
LCBtX2xlbmd0aCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5n
ZShUeXBlQ2hhbmdlKSkgeworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAi
dHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSk7CisgICAgICAgIHNjcmlwdE9iamVjdC5z
ZXQoc2NyaXB0U3RhdGUsICJkaWRUeXBlQ2hhbmdlIiwgdHJ1ZSk7CisgICAgfQorICAgIAorICAg
IGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKExlbmd0aENoYW5nZSkpIHsKKyAgICAgICAgc2NyaXB0
T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7CisgICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRMZW5ndGhDaGFuZ2UiLCB0cnVl
KTsKKyAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShDb21wbGV0aW9uQ2hhbmdl
KSkgewotICAgICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImZhaWxl
ZCIsIG1fZmFpbGVkKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2Ny
aXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImZpbmlzaGVkIiwgbV9maW5pc2hlZCkpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJm
YWlsZWQiLCBtX2ZhaWxlZCk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUs
ICJmaW5pc2hlZCIsIG1fZmluaXNoZWQpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlw
dFN0YXRlLCAiZGlkQ29tcGxldGlvbkNoYW5nZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmICht
X2NoYW5nZXMuaGFzQ2hhbmdlKFRpbWluZ0NoYW5nZSkpIHsKLSAgICAgICAgaWYgKG1fc3RhcnRU
aW1lID4gMCAmJiAhbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhcnRUaW1lIiwg
bV9zdGFydFRpbWUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAobV9yZXNwb25z
ZVJlY2VpdmVkVGltZSA+IDAgJiYgIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJl
c3BvbnNlUmVjZWl2ZWRUaW1lIiwgbV9yZXNwb25zZVJlY2VpdmVkVGltZSkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmIChtX2VuZFRpbWUgPiAwICYmICAhbV9zY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAiZW5kVGltZSIsIG1fZW5kVGltZSkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChtX3N0YXJ0VGltZSA+IDApCisgICAgICAgICAgICBzY3JpcHRPYmpl
Y3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhcnRUaW1lIiwgbV9zdGFydFRpbWUpOworICAgICAgICBp
ZiAobV9yZXNwb25zZVJlY2VpdmVkVGltZSA+IDApCisgICAgICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAicmVzcG9uc2VSZWNlaXZlZFRpbWUiLCBtX3Jlc3BvbnNlUmVjZWl2
ZWRUaW1lKTsKKyAgICAgICAgaWYgKG1fZW5kVGltZSA+IDApCisgICAgICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZW5kVGltZSIsIG1fZW5kVGltZSk7CisgICAgICAgIHNj
cmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRUaW1pbmdDaGFuZ2UiLCB0cnVlKTsKICAg
ICB9CisgICAgCisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIHVwZGF0ZVJlc291cmNlKHNjcmlwdFN0
YXRlLCB3ZWJJbnNwZWN0b3IsICJ1cGRhdGVSZXNvdXJjZSIpOworICAgIHVwZGF0ZVJlc291cmNl
LmFwcGVuZEFyZ3VtZW50KG1faWRlbnRpZmllcik7CisgICAgdXBkYXRlUmVzb3VyY2UuYXBwZW5k
QXJndW1lbnQoc2NyaXB0T2JqZWN0KTsKKyAgICB1cGRhdGVSZXNvdXJjZS5jYWxsKGhhZEV4Y2Vw
dGlvbik7CisgICAgaWYgKGhhZEV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9j
aGFuZ2VzLmNsZWFyQWxsKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnJlbGVhc2VT
Y3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3Qm
IHdlYkluc3BlY3RvciwgYm9vbCBjYWxsUmVtb3ZlUmVzb3VyY2UpCiB7Ci0gICAgaWYgKG1fc2Ny
aXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKKyAgICBpZiAoIW1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IG1fc2Ny
aXB0T2JqZWN0OwotICAgIG1fc2NyaXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7CisgICAgbV9z
Y3JpcHRPYmplY3RDcmVhdGVkID0gZmFsc2U7CiAgICAgbV9jaGFuZ2VzLnNldEFsbCgpOwogCiAg
ICAgaWYgKCFjYWxsUmVtb3ZlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCByZW1vdmVSZXNvdXJjZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAi
cmVtb3ZlUmVzb3VyY2UiKTsKLSAgICByZW1vdmVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChzY3Jp
cHRPYmplY3QpOwotICAgIGJvb2wgaGFkRXhjZXB0aW9uOwotICAgIHJlbW92ZVJlc291cmNlLmNh
bGwoaGFkRXhjZXB0aW9uKTsKKyAgICByZW1vdmVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChtX2lk
ZW50aWZpZXIpOwkKKyAgICByZW1vdmVSZXNvdXJjZS5jYWxsKCk7CiB9CiAKIEluc3BlY3RvclJl
c291cmNlOjpUeXBlIEluc3BlY3RvclJlc291cmNlOjp0eXBlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZS5oCmluZGV4IGE0MTE1ZjUuLjEwMGZlNzEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaApAQCAtNzUsNyArNzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIH5JbnNwZWN0b3JSZXNvdXJjZSgpOwogCiAgICAgICAgIHZvaWQgY3Jl
YXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNw
ZWN0b3IpOwotICAgICAgICB2b2lkIHVwZGF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSopOwor
ICAgICAgICB2b2lkIHVwZGF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlw
dE9iamVjdCYgd2ViSW5zcGVjdG9yKTsKICAgICAgICAgdm9pZCByZWxlYXNlU2NyaXB0T2JqZWN0
KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IsIGJvb2wgY2Fs
bFJlbW92ZVJlc291cmNlKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CkBAIC0xNDAsNyArMTQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBIVFRQSGVhZGVyTWFwIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHM7CiAgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKLSAg
ICAgICAgU2NyaXB0T2JqZWN0IG1fc2NyaXB0T2JqZWN0OworICAgICAgICBib29sIG1fc2NyaXB0
T2JqZWN0Q3JlYXRlZDsKICAgICAgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
OwogICAgICAgICBib29sIG1fY2FjaGVkOwogICAgICAgICBib29sIG1fZmluaXNoZWQ7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZS5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlLmpzCmluZGV4IGJhODc5YTAuLmY5YThhNTAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlLmpzCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlLmpzCkBAIC01NzcsMzEgKzU3NywzNiBA
QCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCBs
aW5lLCB1cmwsIGdyb3VwTGV2ZWwsIHJlcAogICAgIHRoaXMudXJsID0gdXJsOwogICAgIHRoaXMu
Z3JvdXBMZXZlbCA9IGdyb3VwTGV2ZWw7CiAgICAgdGhpcy5yZXBlYXRDb3VudCA9IHJlcGVhdENv
dW50OwotCi0gICAgc3dpdGNoICh0aGlzLmxldmVsKSB7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5UcmFjZToKLSAgICAgICAgICAgIHZhciBz
cGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgc3Bhbi5h
ZGRTdHlsZUNsYXNzKCJjb25zb2xlLWZvcm1hdHRlZC10cmFjZSIpOwotICAgICAgICAgICAgdmFy
IHN0YWNrID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCA2KTsKLSAgICAg
ICAgICAgIHZhciBmdW5jTmFtZXMgPSBzdGFjay5tYXAoZnVuY3Rpb24oZikgewotICAgICAgICAg
ICAgICAgIHJldHVybiBmIHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5j
dGlvbikiKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5jTmFtZXMuam9pbigiXG4iKSkpOwotICAgICAgICAg
ICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gc3BhbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuT2JqZWN0
OgotICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KFsiJU8i
LCBhcmd1bWVudHNbNl1dKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgNikpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgLy8gVGhpcyBpcyB1c2VkIGZvciBpbmxpbmUgbWVzc2FnZSBidWJibGVzIGlu
IFNvdXJjZUZyYW1lcywgb3Igb3RoZXIgcGxhaW4tdGV4dCByZXByZXNlbnRhdGlvbnMuCi0gICAg
dGhpcy5tZXNzYWdlID0gdGhpcy5mb3JtYXR0ZWRNZXNzYWdlLnRleHRDb250ZW50OworICAgIGlm
IChhcmd1bWVudHMubGVuZ3RoID4gNikKKyAgICAgICAgdGhpcy5pbml0Qm9keShBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDYpKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKKyAgICBpbml0Qm9keTogZnVuY3Rpb24oYXJncykKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAodGhpcy5sZXZlbCkgeworICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLlRyYWNlOgorICAgICAgICAgICAg
ICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAg
ICAgICAgIHNwYW4uYWRkU3R5bGVDbGFzcygiY29uc29sZS1mb3JtYXR0ZWQtdHJhY2UiKTsKKyAg
ICAgICAgICAgICAgICB2YXIgc3RhY2sgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdz
KTsKKyAgICAgICAgICAgICAgICB2YXIgZnVuY05hbWVzID0gc3RhY2subWFwKGZ1bmN0aW9uKGYp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZnVuY05hbWVz
LmpvaW4oIlxuIikpKTsKKyAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSBz
cGFuOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLk9iamVjdDoKKyAgICAgICAgICAgICAgICB0
aGlzLmZvcm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQoWyIlTyIsIGFyZ3NbMF1dKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fZm9ybWF0KGFyZ3MpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBp
bmxpbmUgbWVzc2FnZSBidWJibGVzIGluIFNvdXJjZUZyYW1lcywgb3Igb3RoZXIgcGxhaW4tdGV4
dCByZXByZXNlbnRhdGlvbnMuCisgICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuZm9ybWF0dGVk
TWVzc2FnZS50ZXh0Q29udGVudDsKKyAgICB9LAorCiAgICAgaXNFcnJvck9yV2FybmluZzogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9PT0g
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA2MzNkZWU1Li5mZjI1MmRkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQxLDcgKzQxLDcg
QEAgdmFyIFByZWZlcmVuY2VzID0gewogfQogCiB2YXIgV2ViSW5zcGVjdG9yID0gewotICAgIHJl
c291cmNlczogW10sCisgICAgcmVzb3VyY2VzOiB7fSwKICAgICByZXNvdXJjZVVSTE1hcDoge30s
CiAgICAgbWlzc2luZ0xvY2FsaXplZFN0cmluZ3M6IHt9LAogCkBAIC03NzEsOSArNzcxLDE4IEBA
IFdlYkluc3BlY3Rvci5zaG93RGF0YWJhc2VzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5j
dXJyZW50UGFuZWwgPSB0aGlzLnBhbmVscy5kYXRhYmFzZXM7CiB9CiAKLVdlYkluc3BlY3Rvci5h
ZGRSZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLmFkZFJlc291cmNl
ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGF5bG9hZCkKIHsKLSAgICB0aGlzLnJlc291cmNlcy5w
dXNoKHJlc291cmNlKTsKKyAgICB2YXIgcmVzb3VyY2UgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlKAorICAgICAgICBwYXlsb2FkLnJlcXVlc3RIZWFkZXJzLAorICAgICAgICBwYXlsb2FkLnJl
cXVlc3RVUkwsCisgICAgICAgIHBheWxvYWQuaG9zdCwKKyAgICAgICAgcGF5bG9hZC5wYXRoLAor
ICAgICAgICBwYXlsb2FkLmxhc3RQYXRoQ29tcG9uZW50LAorICAgICAgICBpZGVudGlmaWVyLAor
ICAgICAgICBwYXlsb2FkLmlzTWFpblJlc291cmNlLAorICAgICAgICBwYXlsb2FkLmNhY2hlZCk7
CisgICAgdGhpcy5yZXNvdXJjZXNbaWRlbnRpZmllcl0gPSByZXNvdXJjZTsKICAgICB0aGlzLnJl
c291cmNlVVJMTWFwW3Jlc291cmNlLnVybF0gPSByZXNvdXJjZTsKIAogICAgIGlmIChyZXNvdXJj
ZS5tYWluUmVzb3VyY2UpIHsKQEAgLTc4NSwyNCArNzk0LDgzIEBAIFdlYkluc3BlY3Rvci5hZGRS
ZXNvdXJjZSA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgICAgICB0aGlzLnBhbmVscy5yZXNvdXJj
ZXMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi1XZWJJbnNwZWN0b3IucmVtb3ZlUmVzb3Vy
Y2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rvci51cGRhdGVSZXNvdXJjZSA9IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIHBheWxvYWQpCiB7CisgICAgdmFyIHJlc291cmNlID0gdGhpcy5y
ZXNvdXJjZXNbaWRlbnRpZmllcl07CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHBheWxvYWQuZGlkUmVxdWVzdENoYW5nZSkgeworICAgICAgICByZXNvdXJj
ZS51cmwgPSBwYXlsb2FkLnVybDsKKyAgICAgICAgcmVzb3VyY2UuZG9tYWluID0gcGF5bG9hZC5k
b21haW47CisgICAgICAgIHJlc291cmNlLnBhdGggPSBwYXlsb2FkLnBhdGg7CisgICAgICAgIHJl
c291cmNlLmxhc3RQYXRoQ29tcG9uZW50ID0gcGF5bG9hZC5sYXN0UGF0aENvbXBvbmVudDsKKyAg
ICAgICAgcmVzb3VyY2UucmVxdWVzdEhlYWRlcnMgPSBwYXlsb2FkLnJlcXVlc3RIZWFkZXJzOwor
ICAgICAgICByZXNvdXJjZS5tYWluUmVzb3VyY2UgPSBwYXlsb2FkLm1haW5SZXNvdXJjZTsKKyAg
ICB9CisKKyAgICBpZiAocGF5bG9hZC5kaWRSZXNwb25zZUNoYW5nZSkgeworICAgICAgICByZXNv
dXJjZS5taW1lVHlwZSA9IHBheWxvYWQubWltZVR5cGU7CisgICAgICAgIHJlc291cmNlLnN1Z2dl
c3RlZEZpbGVuYW1lID0gcGF5bG9hZC5zdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICAgICAgcmVzb3Vy
Y2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcGF5bG9hZC5leHBlY3RlZENvbnRlbnRMZW5ndGg7
CisgICAgICAgIHJlc291cmNlLnN0YXR1c0NvZGUgPSBwYXlsb2FkLnN0YXR1c0NvZGU7CisgICAg
ICAgIHJlc291cmNlLnN1Z2dlc3RlZEZpbGVuYW1lID0gcGF5bG9hZC5zdWdnZXN0ZWRGaWxlbmFt
ZTsKKyAgICAgICAgcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzID0gcGF5bG9hZC5yZXNwb25zZUhl
YWRlcnM7CisgICAgfQorCisgICAgaWYgKHBheWxvYWQuZGlkVHlwZUNoYW5nZSkgeworICAgICAg
ICByZXNvdXJjZS50eXBlID0gcGF5bG9hZC50eXBlOworICAgIH0KKyAgICAKKyAgICBpZiAocGF5
bG9hZC5kaWRMZW5ndGhDaGFuZ2UpIHsKKyAgICAgICAgcmVzb3VyY2UuY29udGVudExlbmd0aCA9
IHBheWxvYWQuY29udGVudExlbmd0aDsKKyAgICB9CisKKyAgICBpZiAocGF5bG9hZC5kaWRDb21w
bGV0aW9uQ2hhbmdlKSB7CisgICAgICAgIHJlc291cmNlLmZhaWxlZCA9IHBheWxvYWQuZmFpbGVk
OworICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IHBheWxvYWQuZmluaXNoZWQ7CisgICAgfQor
CisgICAgaWYgKHBheWxvYWQuZGlkVGltaW5nQ2hhbmdlKSB7CisgICAgICAgIGlmIChwYXlsb2Fk
LnN0YXJ0VGltZSkKKyAgICAgICAgICAgIHJlc291cmNlLnN0YXJ0VGltZSA9IHBheWxvYWQuc3Rh
cnRUaW1lOworICAgICAgICBpZiAocGF5bG9hZC5yZXNwb25zZVJlY2VpdmVkVGltZSkKKyAgICAg
ICAgICAgIHJlc291cmNlLnJlc3BvbnNlUmVjZWl2ZWRUaW1lID0gcGF5bG9hZC5yZXNwb25zZVJl
Y2VpdmVkVGltZTsKKyAgICAgICAgaWYgKHBheWxvYWQuZW5kVGltZSkKKyAgICAgICAgICAgIHJl
c291cmNlLmVuZFRpbWUgPSBwYXlsb2FkLmVuZFRpbWU7CisgICAgfQorfQorCitXZWJJbnNwZWN0
b3IucmVtb3ZlUmVzb3VyY2UgPSBmdW5jdGlvbihpZGVudGlmaWVyKQoreworICAgIHZhciByZXNv
dXJjZSA9IHRoaXMucmVzb3VyY2VzW2lkZW50aWZpZXJdOworICAgIGlmICghcmVzb3VyY2UpCisg
ICAgICAgIHJldHVybjsKKwogICAgIHJlc291cmNlLmNhdGVnb3J5LnJlbW92ZVJlc291cmNlKHJl
c291cmNlKTsKICAgICBkZWxldGUgdGhpcy5yZXNvdXJjZVVSTE1hcFtyZXNvdXJjZS51cmxdOwot
Ci0gICAgdGhpcy5yZXNvdXJjZXMucmVtb3ZlKHJlc291cmNlLCB0cnVlKTsKKyAgICBkZWxldGUg
dGhpcy5yZXNvdXJjZXNbaWRlbnRpZmllcl07CiAKICAgICBpZiAodGhpcy5wYW5lbHMucmVzb3Vy
Y2VzKQogICAgICAgICB0aGlzLnBhbmVscy5yZXNvdXJjZXMucmVtb3ZlUmVzb3VyY2UocmVzb3Vy
Y2UpOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkRGF0YWJhc2UgPSBmdW5jdGlvbihkYXRhYmFzZSkK
K1dlYkluc3BlY3Rvci5hZGREYXRhYmFzZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7CisgICAgdmFy
IGRhdGFiYXNlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhYmFzZSgKKyAgICAgICAgcGF5bG9hZC5k
YXRhYmFzZSwKKyAgICAgICAgcGF5bG9hZC5kb21haW4sCisgICAgICAgIHBheWxvYWQubmFtZSwK
KyAgICAgICAgcGF5bG9hZC52ZXJzaW9uKTsKICAgICB0aGlzLnBhbmVscy5kYXRhYmFzZXMuYWRk
RGF0YWJhc2UoZGF0YWJhc2UpOwogfQogCi1XZWJJbnNwZWN0b3IuYWRkRE9NU3RvcmFnZSA9IGZ1
bmN0aW9uKGRvbVN0b3JhZ2UpCitXZWJJbnNwZWN0b3IuYWRkRE9NU3RvcmFnZSA9IGZ1bmN0aW9u
KHBheWxvYWQpCiB7CisgICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2UoCisgICAgICAgIHBheWxvYWQuZG9tU3RvcmFnZSwKKyAgICAgICAgcGF5bG9hZC5ob3N0
LAorICAgICAgICBwYXlsb2FkLmlzTG9jYWxTdG9yYWdlKTsKICAgICB0aGlzLnBhbmVscy5kYXRh
YmFzZXMuYWRkRE9NU3RvcmFnZShkb21TdG9yYWdlKTsKIH0KIApAQCAtODY2LDcgKzkzNCw3IEBA
IFdlYkluc3BlY3Rvci5yZXNldCA9IGZ1bmN0aW9uKCkKICAgICBmb3IgKHZhciBjYXRlZ29yeSBp
biB0aGlzLnJlc291cmNlQ2F0ZWdvcmllcykKICAgICAgICAgdGhpcy5yZXNvdXJjZUNhdGVnb3Jp
ZXNbY2F0ZWdvcnldLnJlbW92ZUFsbFJlc291cmNlcygpOwogCi0gICAgdGhpcy5yZXNvdXJjZXMg
PSBbXTsKKyAgICB0aGlzLnJlc291cmNlcyA9IHt9OwogICAgIHRoaXMucmVzb3VyY2VVUkxNYXAg
PSB7fTsKICAgICB0aGlzLmhvdmVyZWRET01Ob2RlID0gbnVsbDsKIApAQCAtODg2LDkgKzk1NCwx
NyBAQCBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxDaGFuZ2VkID0gZnVuY3Rpb24ocmVzb3VyY2Us
IG9sZFVSTCkKICAgICB0aGlzLnJlc291cmNlVVJMTWFwW3Jlc291cmNlLnVybF0gPSByZXNvdXJj
ZTsKIH0KIAotV2ViSW5zcGVjdG9yLmFkZE1lc3NhZ2VUb0NvbnNvbGUgPSBmdW5jdGlvbihtc2cp
CitXZWJJbnNwZWN0b3IuYWRkTWVzc2FnZVRvQ29uc29sZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7
Ci0gICAgdGhpcy5jb25zb2xlLmFkZE1lc3NhZ2UobXNnKTsKKyAgICB2YXIgY29uc29sZU1lc3Nh
Z2UgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlKAorICAgICAgICBwYXlsb2FkLnNv
dXJjZSwKKyAgICAgICAgcGF5bG9hZC5sZXZlbCwKKyAgICAgICAgcGF5bG9hZC5saW5lLAorICAg
ICAgICBwYXlsb2FkLnVybCwKKyAgICAgICAgcGF5bG9hZC5ncm91cExldmVsLAorICAgICAgICBw
YXlsb2FkLnJlcGVhdENvdW50KTsKKyAgICBjb25zb2xlTWVzc2FnZS5pbml0Qm9keShBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTsKKyAgICB0aGlzLmNvbnNvbGUuYWRk
TWVzc2FnZShjb25zb2xlTWVzc2FnZSk7CiB9CiAKIFdlYkluc3BlY3Rvci5hZGRQcm9maWxlID0g
ZnVuY3Rpb24ocHJvZmlsZSkK
</data>
<flag name="review"
          id="15173"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30194</attachid>
            <date>2009-05-11 11:07:44 -0700</date>
            <delta_ts>2009-05-19 09:09:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>jsobj_instantiation_2.txt</filename>
            <type>text/plain</type>
            <size>31934</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGNjYzgwZC4uMGMxOWM0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAwOS0wNS0xMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBJbnBlY3RvckNvbnRyb2xsZXIgc28gdGhhdCBp
dCBkb2VzIG5vdCBpbnN0YW50aWF0ZSByZXNvdXJjZS9jb25zb2xlL2RhdGFiYXNlL2RvbXJlc291
cmNlIGphdmFzY3JpcHQgb2JqZWN0cy4gTW92ZSBpbnN0YW50aWF0aW9uIGludG8gdGhlIGphdmFz
Y3JpcHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI1NDE5CisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmFkZFRvQ29uc29sZSk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdElt
cG9ydGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6SW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2U6OnVuYmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2U6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlOjp1bmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0b3JSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpwb3B1bGF0ZUhlYWRlcnNPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci51cGRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVtb3ZlUmVzb3VyY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5hZGRET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNldCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuYWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMDktMDUtMTAgIEFs
ZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggYzgz
MmE0Yy4uZjNjNTg0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtNzYs
MzEgKzc2LDI2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
IHMsIE1lc3NhZ2VMZXZlbCBsLCBTY3JpcHRDYWxsU3RhY2sqCiAKIHZvaWQgQ29uc29sZU1lc3Nh
Z2U6OmFkZFRvQ29uc29sZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdE9i
amVjdCYgd2ViSW5zcGVjdG9yKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBtZXNzYWdlQ29u
c3RydWN0b3Ioc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgIkNvbnNvbGVNZXNzYWdlIik7Ci0g
ICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4obV9zb3VyY2UpKTsKLSAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtX2xldmVsKSk7Ci0gICAgbWVzc2FnZUNvbnN0cnVj
dG9yLmFwcGVuZEFyZ3VtZW50KG1fbGluZSk7Ci0gICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFwcGVu
ZEFyZ3VtZW50KG1fdXJsKTsKLSAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQo
bV9ncm91cExldmVsKTsKLSAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9y
ZXBlYXRDb3VudCk7Ci0KKyAgICBTY3JpcHRPYmplY3QgbWVzc2FnZU9iaiA9IFNjcmlwdE9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0
ZSwgInNvdXJjZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsKKyAgICBtZXNzYWdlT2Jq
LnNldChzY3JpcHRTdGF0ZSwgImxldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7Cisg
ICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsaW5lIiwgc3RhdGljX2Nhc3Q8aW50Piht
X2xpbmUpKTsKKyAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInVybCIsIG1fdXJsKTsK
KyAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOworICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0YXRlLCAi
cmVwZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKKyAgICAKKyAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oc2NyaXB0U3RhdGUsIHdlYkluc3BlY3Rvciwg
ImFkZE1lc3NhZ2VUb0NvbnNvbGUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNz
YWdlT2JqKTsKICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtZXNz
YWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9mcmFtZXNbaV0pOworICAgICAgICAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobV9mcmFtZXNbaV0pOwogICAgIH0gZWxzZSBpZiAoIW1f
d3JhcHBlZEFyZ3VtZW50cy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fd3JhcHBlZEFyZ3VtZW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1lc3Nh
Z2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChtX3dyYXBwZWRBcmd1bWVudHNbaV0pOwotICAg
IH0gZWxzZQotICAgICAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9tZXNz
YWdlKTsKLQotICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0gICAgU2NyaXB0T2JqZWN0
IG1lc3NhZ2UgPSBtZXNzYWdlQ29uc3RydWN0b3IuY29uc3RydWN0KGhhZEV4Y2VwdGlvbiwgZmFs
c2UpOwotICAgIGlmIChoYWRFeGNlcHRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBhZGRNZXNzYWdlVG9Db25zb2xlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0
b3IsICJhZGRNZXNzYWdlVG9Db25zb2xlIik7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZS5hcHBl
bmRBcmd1bWVudChtZXNzYWdlKTsKLSAgICBhZGRNZXNzYWdlVG9Db25zb2xlLmNhbGwoaGFkRXhj
ZXB0aW9uLCBmYWxzZSk7CisgICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtX3dy
YXBwZWRBcmd1bWVudHNbaV0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG1fbWVzc2FnZSk7CisgICAgfQorICAgIGZ1bmN0aW9uLmNhbGwoKTsKIH0KIAog
Ym9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChTY3JpcHRTdGF0ZSogc3RhdGUsIENvbnNvbGVN
ZXNzYWdlKiBtc2cpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCmluZGV4IGQxYTk1ODQuLmI5ZGViY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC04ODksNyArODg5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW4KICAgICByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAKICAgICBpZiAo
d2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1f
c2NyaXB0U3RhdGUpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fc2Ny
aXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQpAQCAtOTA0LDcgKzkwNCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nCiAgICAgcmVzb3VyY2UtPmFkZExlbmd0aChsZW5ndGhSZWNlaXZl
ZCk7CiAKICAgICBpZiAod2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRl
U2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2Ny
aXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKHdpbmRv
d1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3Njcmlw
dFN0YXRlKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3NjcmlwdFN0
YXRlLCBtX3dlYkluc3BlY3Rvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
RmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlRXJyb3ImIC8qZXJyb3IqLykKQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaQogICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsKIAogICAg
IGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmpl
Y3QobV9zY3JpcHRTdGF0ZSk7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3Qo
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQpAQCAtOTU4LDcgKzk1
OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0
dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgcmVzb3VyY2UtPnNldFhNTEh0dHBS
ZXNwb25zZVRleHQoc291cmNlU3RyaW5nKTsKIAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0g
ICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSk7CisgICAg
ICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNw
ZWN0b3IpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCkBAIC05
NzUsNyArOTc1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRJbXBvcnRlZCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXNvdXJjZS0+c2V0
WE1MSHR0cFJlc3BvbnNlVGV4dChTY3JpcHRTdHJpbmcoc291cmNlU3RyaW5nKSk7CiAgICAgCiAg
ICAgaWYgKHdpbmRvd1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9i
amVjdChtX3NjcmlwdFN0YXRlKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVj
dChtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rvcik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKaW5kZXggMzNkMDM2ZS4u
MmRmOWE5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
UmVzb3VyY2UuY3BwCkBAIC00OCw2ICs0OCw3IEBAIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKFN0b3JhZ2UqIGRvbVN0b3JhZ2UsIGJvCiAg
ICAgOiBtX2RvbVN0b3JhZ2UoZG9tU3RvcmFnZSkKICAgICAsIG1faXNMb2NhbFN0b3JhZ2UoaXNM
b2NhbFN0b3JhZ2UpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9zY3JpcHRPYmplY3RD
cmVhdGVkKGZhbHNlKQogewogfQogCkBAIC01OCwzNiArNTksMzEgQEAgYm9vbCBJbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2U6OmlzU2FtZUhvc3RBbmRUeXBlKEZyYW1lKiBmcmFtZSwgYm9vbCBp
c0xvY2FsU3QKIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6OmJpbmQoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3RvcikKIHsK
LSAgICBpZiAoIW1fc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKKyAgICBpZiAobV9zY3JpcHRP
YmplY3RDcmVhdGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoc2NyaXB0U3RhdGUp
OwogICAgIEFTU0VSVCghd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSk7CiAgICAgaWYgKCFzY3Jp
cHRTdGF0ZSB8fCB3ZWJJbnNwZWN0b3IuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47Ci0K
LSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgcmVzb3VyY2VDb25zdHJ1Y3RvcihzY3JpcHRTdGF0ZSwg
d2ViSW5zcGVjdG9yLCAiRE9NU3RvcmFnZSIpOworICAgIAorICAgIFNjcmlwdE9iamVjdCBzY3Jp
cHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CiAgICAgU2Ny
aXB0T2JqZWN0IGRvbVN0b3JhZ2U7CiAgICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVj
dChtX2ZyYW1lLmdldCgpLCBtX2RvbVN0b3JhZ2UuZ2V0KCksIGRvbVN0b3JhZ2UpKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICByZXNvdXJjZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KGRvbVN0
b3JhZ2UpOwotICAgIHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9mcmFtZS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpKTsKLSAgICByZXNvdXJjZUNvbnN0
cnVjdG9yLmFwcGVuZEFyZ3VtZW50KG1faXNMb2NhbFN0b3JhZ2UpOwotCi0gICAgYm9vbCBoYWRF
eGNlcHRpb24gPSBmYWxzZTsKLSAgICBtX3NjcmlwdE9iamVjdCA9IHJlc291cmNlQ29uc3RydWN0
b3IuY29uc3RydWN0KGhhZEV4Y2VwdGlvbik7Ci0gICAgaWYgKGhhZEV4Y2VwdGlvbikKLSAgICAg
ICAgcmV0dXJuOworICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkb21TdG9yYWdl
IiwgZG9tU3RvcmFnZSk7CisgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImhvc3Qi
LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCkpOworICAgIHNj
cmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJpc0xvY2FsU3RvcmFnZSIsIG1faXNMb2NhbFN0
b3JhZ2UpOwogCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGFkZERPTVN0b3JhZ2Uoc2NyaXB0U3Rh
dGUsIHdlYkluc3BlY3RvciwgImFkZERPTVN0b3JhZ2UiKTsKLSAgICBhZGRET01TdG9yYWdlLmFw
cGVuZEFyZ3VtZW50KG1fc2NyaXB0T2JqZWN0KTsKLSAgICBhZGRET01TdG9yYWdlLmNhbGwoaGFk
RXhjZXB0aW9uKTsKKyAgICBhZGRET01TdG9yYWdlLmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVj
dCk7CisgICAgYWRkRE9NU3RvcmFnZS5jYWxsKCk7CisgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVk
ID0gdHJ1ZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6OnVuYmluZCgp
CiB7Ci0gICAgbV9zY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3QoKTsKKyAgICBtX3NjcmlwdE9i
amVjdENyZWF0ZWQgPSBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaAppbmRleCBhZDNl
MTk2Li40N2QzZmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UuaApAQCAtNjEsMTIgKzYxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UoU3RvcmFnZSosIGJvb2wgaXNMb2Nh
bFN0b3JhZ2UsIEZyYW1lKik7CiAKLSAgICAgICAgU2NyaXB0T2JqZWN0IG1fc2NyaXB0T2JqZWN0
OwogICAgICAgICBSZWZQdHI8U3RvcmFnZT4gbV9kb21TdG9yYWdlOwogICAgICAgICBib29sIG1f
aXNMb2NhbFN0b3JhZ2U7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKKyAgICAgICAg
Ym9vbCBtX3NjcmlwdE9iamVjdENyZWF0ZWQ7CiAKLSAgICBwcml2YXRlOgogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggNDNjZDhlZi4uNzZjYTgwMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKQEAgLTQ2LDEyICs0Niwx
MyBAQCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
KERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgUwogICAgICwgbV9kb21haW4oZG9tYWluKQogICAg
ICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICAsIG1fc2NyaXB0
T2JqZWN0Q3JlYXRlZChmYWxzZSkKIHsKIH0KIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlOjpiaW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3
ZWJJbnNwZWN0b3IpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdE9iamVjdC5oYXNOb1ZhbHVlKCkpCisg
ICAgaWYgKG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKHNjcmlwdFN0YXRlKTsKQEAgLTU5LDI5ICs2MCwyNCBAQCB2b2lkIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U6OmJpbmQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRP
YmplYwogICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlc291cmNlQ29uc3Ry
dWN0b3Ioc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgIkRhdGFiYXNlIik7CisgICAgU2NyaXB0
T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRl
KTsKICAgICBTY3JpcHRPYmplY3QgZGF0YWJhc2U7CiAgICAgaWYgKCFnZXRRdWFyYW50aW5lZFNj
cmlwdE9iamVjdChtX2RhdGFiYXNlLmdldCgpLCBkYXRhYmFzZSkpCiAgICAgICAgIHJldHVybjsK
LQotICAgIHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQoZGF0YWJhc2UpOwotICAg
IHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9kb21haW4pOwotICAgIHJlc291
cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9uYW1lKTsKLSAgICByZXNvdXJjZUNvbnN0
cnVjdG9yLmFwcGVuZEFyZ3VtZW50KG1fdmVyc2lvbik7Ci0KLSAgICBib29sIGhhZEV4Y2VwdGlv
biA9IGZhbHNlOwotICAgIG1fc2NyaXB0T2JqZWN0ID0gcmVzb3VyY2VDb25zdHJ1Y3Rvci5jb25z
dHJ1Y3QoaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQotICAgICAgICByZXR1
cm47Ci0KKyAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGF0YWJhc2UiLCBkYXRh
YmFzZSk7CisgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFpbiIsIG1fZG9t
YWluKTsKKyAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibmFtZSIsIG1fbmFtZSk7
CisgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInZlcnNpb24iLCBtX3ZlcnNpb24p
OworICAgIAogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGREYXRhYmFzZShzY3JpcHRTdGF0ZSwg
d2ViSW5zcGVjdG9yLCAiYWRkRGF0YWJhc2UiKTsKLSAgICBhZGREYXRhYmFzZS5hcHBlbmRBcmd1
bWVudChtX3NjcmlwdE9iamVjdCk7Ci0gICAgYWRkRGF0YWJhc2UuY2FsbChoYWRFeGNlcHRpb24p
OworICAgIGFkZERhdGFiYXNlLmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVjdCk7CisgICAgYWRk
RGF0YWJhc2UuY2FsbCgpOworICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6dW5iaW5kKCkKIHsKLSAgICBtX3Njcmlw
dE9iamVjdCA9IFNjcmlwdE9iamVjdCgpOworICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IGZh
bHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKaW5kZXggMWJlMjMzNC4uMWEwYTY1NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaApAQCAtNTUsMTIg
KzU1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIElu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwotICAgICAgICBTY3Jp
cHRPYmplY3QgbV9zY3JpcHRPYmplY3Q7Ci0KKyAgICAgICAgCiAgICAgICAgIFJlZlB0cjxEYXRh
YmFzZT4gbV9kYXRhYmFzZTsKICAgICAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgICAgICBTdHJp
bmcgbV9uYW1lOwogICAgICAgICBTdHJpbmcgbV92ZXJzaW9uOworICAgICAgICBib29sIG1fc2Ny
aXB0T2JqZWN0Q3JlYXRlZDsKKwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCAxZWQzNzZkLi4yY2UxOWNi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBAIEluc3BlY3RvclJlc291cmNlOjpJbnNwZWN0b3JSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAsIG1fbG9hZGVyKGxvYWRlcikKICAgICAsIG1fZnJhbWUobG9hZGVyLT5mcmFtZSgp
KQorICAgICwgbV9zY3JpcHRPYmplY3RDcmVhdGVkKGZhbHNlKQogICAgICwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgoMCkKICAgICAsIG1fY2FjaGVkKGZhbHNlKQogICAgICwgbV9maW5pc2hlZChm
YWxzZSkKQEAgLTEwNCw1OCArMTA1LDQ2IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1fY2hhbmdl
cy5zZXQoVHlwZUNoYW5nZSk7CiB9CiAKLXN0YXRpYyBTY3JpcHRPYmplY3QgY3JlYXRlSGVhZGVy
c09iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaGFkRXhjZXB0aW9uKQorc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJzT2Jq
ZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7Ci0gICAgU2NyaXB0T2JqZWN0IG9iamVjdCA9IFNj
cmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBIVFRQSGVhZGVyTWFwOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJzLmVuZCgpOwogICAgIGZvciAoSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBpZiAoIW9iamVjdC5zZXQoc2NyaXB0U3RhdGUsIGl0LT5maXJzdC5zdHJpbmco
KSwgaXQtPnNlY29uZCkpIHsKLSAgICAgICAgICAgIGhhZEV4Y2VwdGlvbiA9IHRydWU7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBvYmplY3QtPnNldChzY3JpcHRTdGF0
ZSwgaXQtPmZpcnN0LnN0cmluZygpLCBpdC0+c2Vjb25kKTsKICAgICB9Ci0KLSAgICByZXR1cm4g
b2JqZWN0OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRPYmplY3Qo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rv
cikKIHsKLSAgICBpZiAobV9zY3JpcHRPYmplY3QuaGFzTm9WYWx1ZSgpKSB7CisgICAgaWYgKCFt
X3NjcmlwdE9iamVjdENyZWF0ZWQpIHsKICAgICAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxz
ZTsKIAotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgcmVzb3VyY2VDb25zdHJ1Y3RvcihzY3Jp
cHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAiUmVzb3VyY2UiKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0
IHJlcXVlc3RIZWFkZXJzID0gY3JlYXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgbV9yZXF1
ZXN0SGVhZGVyRmllbGRzLCBoYWRFeGNlcHRpb24pOwotICAgICAgICBpZiAoaGFkRXhjZXB0aW9u
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJlc291cmNlQ29uc3RydWN0b3IuYXBw
ZW5kQXJndW1lbnQocmVxdWVzdEhlYWRlcnMpOwotICAgICAgICByZXNvdXJjZUNvbnN0cnVjdG9y
LmFwcGVuZEFyZ3VtZW50KHJlcXVlc3RVUkwoKSk7Ci0gICAgICAgIHJlc291cmNlQ29uc3RydWN0
b3IuYXBwZW5kQXJndW1lbnQobV9yZXF1ZXN0VVJMLmhvc3QoKSk7Ci0gICAgICAgIHJlc291cmNl
Q29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9yZXF1ZXN0VVJMLnBhdGgoKSk7Ci0gICAgICAg
IHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9yZXF1ZXN0VVJMLmxhc3RQYXRo
Q29tcG9uZW50KCkpOwotICAgICAgICByZXNvdXJjZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50
KG1faWRlbnRpZmllcik7Ci0gICAgICAgIHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1l
bnQobV9pc01haW5SZXNvdXJjZSk7Ci0gICAgICAgIHJlc291cmNlQ29uc3RydWN0b3IuYXBwZW5k
QXJndW1lbnQobV9jYWNoZWQpOwotCi0gICAgICAgIG1fc2NyaXB0T2JqZWN0ID0gcmVzb3VyY2VD
b25zdHJ1Y3Rvci5jb25zdHJ1Y3QoaGFkRXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGhhZEV4Y2Vw
dGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQorICAgICAgICBTY3JpcHRPYmplY3Qgc2NyaXB0
T2JqZWN0ID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBT
Y3JpcHRPYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3Jp
cHRTdGF0ZSk7CisgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgJnJl
cXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOworICAgICAgICBzY3JpcHRPYmpl
Y3Quc2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7Cisg
ICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXF1ZXN0VVJMIiwgcmVxdWVz
dFVSTCgpKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImhvc3QiLCBt
X3JlcXVlc3RVUkwuaG9zdCgpKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0
ZSwgInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNl
dChzY3JpcHRTdGF0ZSwgImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQYXRo
Q29tcG9uZW50KCkpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiaXNN
YWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNl
dChzY3JpcHRTdGF0ZSwgImNhY2hlZCIsIG1fY2FjaGVkKTsKKyAgICAgICAgCiAgICAgICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBhZGRSZXNvdXJjZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAi
YWRkUmVzb3VyY2UiKTsKLSAgICAgICAgYWRkUmVzb3VyY2UuYXBwZW5kQXJndW1lbnQobV9zY3Jp
cHRPYmplY3QpOworICAgICAgICBhZGRSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChtX2lkZW50aWZp
ZXIpOworICAgICAgICBhZGRSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChzY3JpcHRPYmplY3QpOwog
ICAgICAgICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChoYWRF
eGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbV9zY3JpcHRPYmplY3RD
cmVhdGVkID0gdHJ1ZTsKICAgICAgICAgbV9jaGFuZ2VzLmNsZWFyKFJlcXVlc3RDaGFuZ2UpOwog
ICAgIH0KLQotICAgIHVwZGF0ZVNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSk7CisgICAgdXBkYXRl
U2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IpOwogfQogCi12b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
KQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAg
aWYgKG1fc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUoKSkKKyAgICBpZiAoIW1fc2NyaXB0T2JqZWN0
Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2Uo
Tm9DaGFuZ2UpKQpAQCAtMTYzLDk2ICsxNTIsODEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6
dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIAogICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7CiAKKyAgICBTY3JpcHRPYmplY3Qgc2NyaXB0T2JqZWN0ID0g
U2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwogICAgIGlmIChtX2NoYW5nZXMu
aGFzQ2hhbmdlKFJlcXVlc3RDaGFuZ2UpKSB7Ci0gICAgICAgIGlmICghbV9zY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAidXJsIiwgcmVxdWVzdFVSTCgpKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFp
biIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicGF0aCIsIG1fcmVxdWVzdFVS
TC5wYXRoKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwu
bGFzdFBhdGhDb21wb25lbnQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgU2Ny
aXB0T2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gY3JlYXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0
ZSwgbV9yZXF1ZXN0SGVhZGVyRmllbGRzLCBoYWRFeGNlcHRpb24pOwotICAgICAgICBpZiAoaGFk
RXhjZXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycykp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3NjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKSkKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInVybCIs
IHJlcXVlc3RVUkwoKSk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJk
b21haW4iLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChz
Y3JpcHRTdGF0ZSwgInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKKyAgICAgICAgc2NyaXB0
T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJM
Lmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgICAgICBTY3JpcHRPYmplY3QgcmVxdWVzdEhlYWRl
cnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIHBvcHVs
YXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RI
ZWFkZXJGaWVsZHMpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicmVx
dWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKKyAgICAgICAg
c2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVlKTsK
ICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXNwb25zZUNoYW5nZSkpIHsK
LSAgICAgICAgaWYgKCFtX3NjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJtaW1lVHlwZSIs
IG1fbWltZVR5cGUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3VnZ2VzdGVkRmlsZW5hbWUiLCBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2NyaXB0
T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImV4cGVjdGVkQ29udGVudExlbmd0aCIsIG1fZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1f
c2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInN0YXR1c0NvZGUiLCBtX3Jlc3BvbnNlU3Rh
dHVzQ29kZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3NjcmlwdE9i
amVjdC5zZXQoc2NyaXB0U3RhdGUsICJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmls
ZW5hbWUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFNjcmlwdE9iamVjdCByZXNw
b25zZUhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCBtX3Jlc3BvbnNl
SGVhZGVyRmllbGRzLCBoYWRFeGNlcHRpb24pOwotICAgICAgICBpZiAoaGFkRXhjZXB0aW9uKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zY3JpcHRPYmplY3Quc2V0KHNj
cmlwdFN0YXRlLCAicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKSkKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgIm1pbWVU
eXBlIiwgbV9taW1lVHlwZSk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUs
ICJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiwgbV9leHBl
Y3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAic3RhdHVzQ29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2RlKTsKKyAgICAgICAgc2NyaXB0T2Jq
ZWN0LnNldChzY3JpcHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxl
bmFtZSk7CisgICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBTY3JpcHRPYmpl
Y3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVj
dChzY3JpcHRTdGF0ZSwgJnJlc3BvbnNlSGVhZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7
CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXNwb25zZUhlYWRlcnMi
LCByZXNwb25zZUhlYWRlcnMpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKLSAgICBpZiAobV9jaGFuZ2Vz
Lmhhc0NoYW5nZShUeXBlQ2hhbmdlKSAmJiAhbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAidHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKExlbmd0aENoYW5nZSkgJiYgIW1fc2NyaXB0T2Jq
ZWN0LnNldChzY3JpcHRTdGF0ZSwgImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCkpCi0gICAgICAg
IHJldHVybjsKKyAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShUeXBlQ2hhbmdlKSkgeworICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAidHlwZSIsIHN0YXRpY19jYXN0PGlu
dD4odHlwZSgpKSk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRU
eXBlQ2hhbmdlIiwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hh
bmdlKExlbmd0aENoYW5nZSkpIHsKKyAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0
ZSwgImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJkaWRMZW5ndGhDaGFuZ2UiLCB0cnVlKTsKKyAgICB9CiAKICAgICBpZiAo
bV9jaGFuZ2VzLmhhc0NoYW5nZShDb21wbGV0aW9uQ2hhbmdlKSkgewotICAgICAgICBpZiAoIW1f
c2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImZhaWxlZCIsIG1fZmFpbGVkKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRT
dGF0ZSwgImZpbmlzaGVkIiwgbV9maW5pc2hlZCkpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJmYWlsZWQiLCBtX2ZhaWxlZCk7Cisg
ICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJmaW5pc2hlZCIsIG1fZmluaXNo
ZWQpOworICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkQ29tcGxldGlv
bkNoYW5nZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFRp
bWluZ0NoYW5nZSkpIHsKLSAgICAgICAgaWYgKG1fc3RhcnRUaW1lID4gMCAmJiAhbV9zY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhcnRUaW1lIiwgbV9zdGFydFRpbWUpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBpZiAobV9yZXNwb25zZVJlY2VpdmVkVGltZSA+IDAgJiYg
IW1fc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlc3BvbnNlUmVjZWl2ZWRUaW1lIiwg
bV9yZXNwb25zZVJlY2VpdmVkVGltZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChtX2VuZFRpbWUgPiAwICYmICAhbV9zY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZW5k
VGltZSIsIG1fZW5kVGltZSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3N0
YXJ0VGltZSA+IDApCisgICAgICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAi
c3RhcnRUaW1lIiwgbV9zdGFydFRpbWUpOworICAgICAgICBpZiAobV9yZXNwb25zZVJlY2VpdmVk
VGltZSA+IDApCisgICAgICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicmVz
cG9uc2VSZWNlaXZlZFRpbWUiLCBtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lKTsKKyAgICAgICAgaWYg
KG1fZW5kVGltZSA+IDApCisgICAgICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAiZW5kVGltZSIsIG1fZW5kVGltZSk7CisgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0
U3RhdGUsICJkaWRUaW1pbmdDaGFuZ2UiLCB0cnVlKTsKICAgICB9CisgICAgCisgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIHVwZGF0ZVJlc291cmNlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJ1
cGRhdGVSZXNvdXJjZSIpOworICAgIHVwZGF0ZVJlc291cmNlLmFwcGVuZEFyZ3VtZW50KG1faWRl
bnRpZmllcik7CisgICAgdXBkYXRlUmVzb3VyY2UuYXBwZW5kQXJndW1lbnQoc2NyaXB0T2JqZWN0
KTsKKyAgICB1cGRhdGVSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlvbik7CisgICAgaWYgKGhhZEV4
Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jaGFuZ2VzLmNsZWFyQWxsKCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnJlbGVhc2VTY3JpcHRPYmplY3QoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3RvciwgYm9vbCBj
YWxsUmVtb3ZlUmVzb3VyY2UpCiB7Ci0gICAgaWYgKG1fc2NyaXB0T2JqZWN0Lmhhc05vVmFsdWUo
KSkKKyAgICBpZiAoIW1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IG1fc2NyaXB0T2JqZWN0OwotICAgIG1fc2Ny
aXB0T2JqZWN0ID0gU2NyaXB0T2JqZWN0KCk7CisgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0g
ZmFsc2U7CiAgICAgbV9jaGFuZ2VzLnNldEFsbCgpOwogCiAgICAgaWYgKCFjYWxsUmVtb3ZlUmVz
b3VyY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCByZW1vdmVS
ZXNvdXJjZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAicmVtb3ZlUmVzb3VyY2UiKTsKLSAg
ICByZW1vdmVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChzY3JpcHRPYmplY3QpOwotICAgIGJvb2wg
aGFkRXhjZXB0aW9uOwotICAgIHJlbW92ZVJlc291cmNlLmNhbGwoaGFkRXhjZXB0aW9uKTsKKyAg
ICByZW1vdmVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChtX2lkZW50aWZpZXIpOworICAgIHJlbW92
ZVJlc291cmNlLmNhbGwoKTsKIH0KIAogSW5zcGVjdG9yUmVzb3VyY2U6OlR5cGUgSW5zcGVjdG9y
UmVzb3VyY2U6OnR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgK
aW5kZXggYTQxMTVmNS4uMTAwZmU3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZS5oCkBAIC03NSw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfkluc3Bl
Y3RvclJlc291cmNlKCk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVTY3JpcHRPYmplY3QoU2NyaXB0
U3RhdGUqLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rvcik7Ci0gICAgICAgIHZvaWQg
dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKik7CisgICAgICAgIHZvaWQgdXBkYXRlU2Ny
aXB0T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3Ip
OwogICAgICAgICB2b2lkIHJlbGVhc2VTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCBjb25zdCBT
Y3JpcHRPYmplY3QmIHdlYkluc3BlY3RvciwgYm9vbCBjYWxsUmVtb3ZlUmVzb3VyY2UpOwogCiAg
ICAgICAgIHZvaWQgdXBkYXRlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE0
MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAg
bV9yZXNwb25zZUhlYWRlckZpZWxkczsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAg
ICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotICAgICAgICBTY3JpcHRPYmplY3QgbV9z
Y3JpcHRPYmplY3Q7CisgICAgICAgIGJvb2wgbV9zY3JpcHRPYmplY3RDcmVhdGVkOwogICAgICAg
ICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgICAgIGJvb2wgbV9jYWNo
ZWQ7CiAgICAgICAgIGJvb2wgbV9maW5pc2hlZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bnNvbGUuanMKaW5kZXggYmE4NzlhMC4uNjVjYzdkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbnNvbGUuanMKQEAgLTU3NywzMSArNTc3LDM2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZSA9IGZ1bmN0aW9uKHNvdXJjZSwgbGV2ZWwsIGxpbmUsIHVybCwgZ3JvdXBMZXZlbCwg
cmVwCiAgICAgdGhpcy51cmwgPSB1cmw7CiAgICAgdGhpcy5ncm91cExldmVsID0gZ3JvdXBMZXZl
bDsKICAgICB0aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7Ci0KLSAgICBzd2l0Y2ggKHRo
aXMubGV2ZWwpIHsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZUxldmVsLlRyYWNlOgotICAgICAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7Ci0gICAgICAgICAgICBzcGFuLmFkZFN0eWxlQ2xhc3MoImNvbnNvbGUt
Zm9ybWF0dGVkLXRyYWNlIik7Ci0gICAgICAgICAgICB2YXIgc3RhY2sgPSBBcnJheS5wcm90b3R5
cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDYpOwotICAgICAgICAgICAgdmFyIGZ1bmNOYW1lcyA9
IHN0YWNrLm1hcChmdW5jdGlvbihmKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGYgfHwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGZ1bmNOYW1lcy5qb2luKCJcbiIpKSk7Ci0gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3Nh
Z2UgPSBzcGFuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5PYmplY3Q6Ci0gICAgICAgICAgICB0aGlzLmZv
cm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQoWyIlTyIsIGFyZ3VtZW50c1s2XV0pOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGlzLmZvcm1h
dHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn
dW1lbnRzLCA2KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGlz
IHVzZWQgZm9yIGlubGluZSBtZXNzYWdlIGJ1YmJsZXMgaW4gU291cmNlRnJhbWVzLCBvciBvdGhl
ciBwbGFpbi10ZXh0IHJlcHJlc2VudGF0aW9ucy4KLSAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLmZv
cm1hdHRlZE1lc3NhZ2UudGV4dENvbnRlbnQ7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiA2
KQorICAgICAgICB0aGlzLnNldE1lc3NhZ2VCb2R5KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxs
KGFyZ3VtZW50cywgNikpOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90
eXBlID0geworICAgIHNldE1lc3NhZ2VCb2R5OiBmdW5jdGlvbihhcmdzKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoICh0aGlzLmxldmVsKSB7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuVHJhY2U6CisgICAgICAgICAgICAgICAgdmFyIHNw
YW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICAgICAgc3Bh
bi5hZGRTdHlsZUNsYXNzKCJjb25zb2xlLWZvcm1hdHRlZC10cmFjZSIpOworICAgICAgICAgICAg
ICAgIHZhciBzdGFjayA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpOworICAgICAg
ICAgICAgICAgIHZhciBmdW5jTmFtZXMgPSBzdGFjay5tYXAoZnVuY3Rpb24oZikgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZiB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1v
dXMgZnVuY3Rpb24pIik7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgc3Bh
bi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5jTmFtZXMuam9pbigiXG4i
KSkpOworICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IHNwYW47CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuT2JqZWN0OgorICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0
dGVkTWVzc2FnZSA9IHRoaXMuX2Zvcm1hdChbIiVPIiwgYXJnc1swXV0pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aGlzLmZv
cm1hdHRlZE1lc3NhZ2UgPSB0aGlzLl9mb3JtYXQoYXJncyk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGlubGluZSBtZXNz
YWdlIGJ1YmJsZXMgaW4gU291cmNlRnJhbWVzLCBvciBvdGhlciBwbGFpbi10ZXh0IHJlcHJlc2Vu
dGF0aW9ucy4KKyAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5mb3JtYXR0ZWRNZXNzYWdlLnRl
eHRDb250ZW50OworICAgIH0sCisKICAgICBpc0Vycm9yT3JXYXJuaW5nOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICByZXR1cm4gKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCB0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDYzM2RlZTUuLjA5N2RmMGMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDEsNyArNDEsNyBAQCB2YXIgUHJl
ZmVyZW5jZXMgPSB7CiB9CiAKIHZhciBXZWJJbnNwZWN0b3IgPSB7Ci0gICAgcmVzb3VyY2VzOiBb
XSwKKyAgICByZXNvdXJjZXM6IHt9LAogICAgIHJlc291cmNlVVJMTWFwOiB7fSwKICAgICBtaXNz
aW5nTG9jYWxpemVkU3RyaW5nczoge30sCiAKQEAgLTc3MSw5ICs3NzEsMTggQEAgV2ViSW5zcGVj
dG9yLnNob3dEYXRhYmFzZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmN1cnJlbnRQYW5l
bCA9IHRoaXMucGFuZWxzLmRhdGFiYXNlczsKIH0KIAotV2ViSW5zcGVjdG9yLmFkZFJlc291cmNl
ID0gZnVuY3Rpb24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuYWRkUmVzb3VyY2UgPSBmdW5jdGlv
bihpZGVudGlmaWVyLCBwYXlsb2FkKQogewotICAgIHRoaXMucmVzb3VyY2VzLnB1c2gocmVzb3Vy
Y2UpOworICAgIHZhciByZXNvdXJjZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2UoCisgICAg
ICAgIHBheWxvYWQucmVxdWVzdEhlYWRlcnMsCisgICAgICAgIHBheWxvYWQucmVxdWVzdFVSTCwK
KyAgICAgICAgcGF5bG9hZC5ob3N0LAorICAgICAgICBwYXlsb2FkLnBhdGgsCisgICAgICAgIHBh
eWxvYWQubGFzdFBhdGhDb21wb25lbnQsCisgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAgIHBh
eWxvYWQuaXNNYWluUmVzb3VyY2UsCisgICAgICAgIHBheWxvYWQuY2FjaGVkKTsKKyAgICB0aGlz
LnJlc291cmNlc1tpZGVudGlmaWVyXSA9IHJlc291cmNlOwogICAgIHRoaXMucmVzb3VyY2VVUkxN
YXBbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlOwogCiAgICAgaWYgKHJlc291cmNlLm1haW5SZXNv
dXJjZSkgewpAQCAtNzg1LDI0ICs3OTQsODMgQEAgV2ViSW5zcGVjdG9yLmFkZFJlc291cmNlID0g
ZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgICAgIHRoaXMucGFuZWxzLnJlc291cmNlcy5hZGRSZXNv
dXJjZShyZXNvdXJjZSk7CiB9CiAKLVdlYkluc3BlY3Rvci5yZW1vdmVSZXNvdXJjZSA9IGZ1bmN0
aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLnVwZGF0ZVJlc291cmNlID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgcGF5bG9hZCkKIHsKKyAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLnJlc291cmNlc1tp
ZGVudGlmaWVyXTsKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAocGF5bG9hZC5kaWRSZXF1ZXN0Q2hhbmdlKSB7CisgICAgICAgIHJlc291cmNlLnVybCA9IHBh
eWxvYWQudXJsOworICAgICAgICByZXNvdXJjZS5kb21haW4gPSBwYXlsb2FkLmRvbWFpbjsKKyAg
ICAgICAgcmVzb3VyY2UucGF0aCA9IHBheWxvYWQucGF0aDsKKyAgICAgICAgcmVzb3VyY2UubGFz
dFBhdGhDb21wb25lbnQgPSBwYXlsb2FkLmxhc3RQYXRoQ29tcG9uZW50OworICAgICAgICByZXNv
dXJjZS5yZXF1ZXN0SGVhZGVycyA9IHBheWxvYWQucmVxdWVzdEhlYWRlcnM7CisgICAgICAgIHJl
c291cmNlLm1haW5SZXNvdXJjZSA9IHBheWxvYWQubWFpblJlc291cmNlOworICAgIH0KKworICAg
IGlmIChwYXlsb2FkLmRpZFJlc3BvbnNlQ2hhbmdlKSB7CisgICAgICAgIHJlc291cmNlLm1pbWVU
eXBlID0gcGF5bG9hZC5taW1lVHlwZTsKKyAgICAgICAgcmVzb3VyY2Uuc3VnZ2VzdGVkRmlsZW5h
bWUgPSBwYXlsb2FkLnN1Z2dlc3RlZEZpbGVuYW1lOworICAgICAgICByZXNvdXJjZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGggPSBwYXlsb2FkLmV4cGVjdGVkQ29udGVudExlbmd0aDsKKyAgICAgICAg
cmVzb3VyY2Uuc3RhdHVzQ29kZSA9IHBheWxvYWQuc3RhdHVzQ29kZTsKKyAgICAgICAgcmVzb3Vy
Y2Uuc3VnZ2VzdGVkRmlsZW5hbWUgPSBwYXlsb2FkLnN1Z2dlc3RlZEZpbGVuYW1lOworICAgICAg
ICByZXNvdXJjZS5yZXNwb25zZUhlYWRlcnMgPSBwYXlsb2FkLnJlc3BvbnNlSGVhZGVyczsKKyAg
ICB9CisKKyAgICBpZiAocGF5bG9hZC5kaWRUeXBlQ2hhbmdlKSB7CisgICAgICAgIHJlc291cmNl
LnR5cGUgPSBwYXlsb2FkLnR5cGU7CisgICAgfQorICAgIAorICAgIGlmIChwYXlsb2FkLmRpZExl
bmd0aENoYW5nZSkgeworICAgICAgICByZXNvdXJjZS5jb250ZW50TGVuZ3RoID0gcGF5bG9hZC5j
b250ZW50TGVuZ3RoOworICAgIH0KKworICAgIGlmIChwYXlsb2FkLmRpZENvbXBsZXRpb25DaGFu
Z2UpIHsKKyAgICAgICAgcmVzb3VyY2UuZmFpbGVkID0gcGF5bG9hZC5mYWlsZWQ7CisgICAgICAg
IHJlc291cmNlLmZpbmlzaGVkID0gcGF5bG9hZC5maW5pc2hlZDsKKyAgICB9CisKKyAgICBpZiAo
cGF5bG9hZC5kaWRUaW1pbmdDaGFuZ2UpIHsKKyAgICAgICAgaWYgKHBheWxvYWQuc3RhcnRUaW1l
KQorICAgICAgICAgICAgcmVzb3VyY2Uuc3RhcnRUaW1lID0gcGF5bG9hZC5zdGFydFRpbWU7Cisg
ICAgICAgIGlmIChwYXlsb2FkLnJlc3BvbnNlUmVjZWl2ZWRUaW1lKQorICAgICAgICAgICAgcmVz
b3VyY2UucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSBwYXlsb2FkLnJlc3BvbnNlUmVjZWl2ZWRUaW1l
OworICAgICAgICBpZiAocGF5bG9hZC5lbmRUaW1lKQorICAgICAgICAgICAgcmVzb3VyY2UuZW5k
VGltZSA9IHBheWxvYWQuZW5kVGltZTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5yZW1vdmVS
ZXNvdXJjZSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpCit7CisgICAgdmFyIHJlc291cmNlID0gdGhp
cy5yZXNvdXJjZXNbaWRlbnRpZmllcl07CisgICAgaWYgKCFyZXNvdXJjZSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgcmVzb3VyY2UuY2F0ZWdvcnkucmVtb3ZlUmVzb3VyY2UocmVzb3VyY2UpOwog
ICAgIGRlbGV0ZSB0aGlzLnJlc291cmNlVVJMTWFwW3Jlc291cmNlLnVybF07Ci0KLSAgICB0aGlz
LnJlc291cmNlcy5yZW1vdmUocmVzb3VyY2UsIHRydWUpOworICAgIGRlbGV0ZSB0aGlzLnJlc291
cmNlc1tpZGVudGlmaWVyXTsKIAogICAgIGlmICh0aGlzLnBhbmVscy5yZXNvdXJjZXMpCiAgICAg
ICAgIHRoaXMucGFuZWxzLnJlc291cmNlcy5yZW1vdmVSZXNvdXJjZShyZXNvdXJjZSk7CiB9CiAK
LVdlYkluc3BlY3Rvci5hZGREYXRhYmFzZSA9IGZ1bmN0aW9uKGRhdGFiYXNlKQorV2ViSW5zcGVj
dG9yLmFkZERhdGFiYXNlID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKKyAgICB2YXIgZGF0YWJhc2Ug
PSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFiYXNlKAorICAgICAgICBwYXlsb2FkLmRhdGFiYXNlLAor
ICAgICAgICBwYXlsb2FkLmRvbWFpbiwKKyAgICAgICAgcGF5bG9hZC5uYW1lLAorICAgICAgICBw
YXlsb2FkLnZlcnNpb24pOwogICAgIHRoaXMucGFuZWxzLmRhdGFiYXNlcy5hZGREYXRhYmFzZShk
YXRhYmFzZSk7CiB9CiAKLVdlYkluc3BlY3Rvci5hZGRET01TdG9yYWdlID0gZnVuY3Rpb24oZG9t
U3RvcmFnZSkKK1dlYkluc3BlY3Rvci5hZGRET01TdG9yYWdlID0gZnVuY3Rpb24ocGF5bG9hZCkK
IHsKKyAgICB2YXIgZG9tU3RvcmFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSgKKyAg
ICAgICAgcGF5bG9hZC5kb21TdG9yYWdlLAorICAgICAgICBwYXlsb2FkLmhvc3QsCisgICAgICAg
IHBheWxvYWQuaXNMb2NhbFN0b3JhZ2UpOwogICAgIHRoaXMucGFuZWxzLmRhdGFiYXNlcy5hZGRE
T01TdG9yYWdlKGRvbVN0b3JhZ2UpOwogfQogCkBAIC04NjYsNyArOTM0LDcgQEAgV2ViSW5zcGVj
dG9yLnJlc2V0ID0gZnVuY3Rpb24oKQogICAgIGZvciAodmFyIGNhdGVnb3J5IGluIHRoaXMucmVz
b3VyY2VDYXRlZ29yaWVzKQogICAgICAgICB0aGlzLnJlc291cmNlQ2F0ZWdvcmllc1tjYXRlZ29y
eV0ucmVtb3ZlQWxsUmVzb3VyY2VzKCk7CiAKLSAgICB0aGlzLnJlc291cmNlcyA9IFtdOworICAg
IHRoaXMucmVzb3VyY2VzID0ge307CiAgICAgdGhpcy5yZXNvdXJjZVVSTE1hcCA9IHt9OwogICAg
IHRoaXMuaG92ZXJlZERPTU5vZGUgPSBudWxsOwogCkBAIC04ODYsOSArOTU0LDE3IEBAIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVVSTENoYW5nZWQgPSBmdW5jdGlvbihyZXNvdXJjZSwgb2xkVVJMKQog
ICAgIHRoaXMucmVzb3VyY2VVUkxNYXBbcmVzb3VyY2UudXJsXSA9IHJlc291cmNlOwogfQogCi1X
ZWJJbnNwZWN0b3IuYWRkTWVzc2FnZVRvQ29uc29sZSA9IGZ1bmN0aW9uKG1zZykKK1dlYkluc3Bl
Y3Rvci5hZGRNZXNzYWdlVG9Db25zb2xlID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICB0aGlz
LmNvbnNvbGUuYWRkTWVzc2FnZShtc2cpOworICAgIHZhciBjb25zb2xlTWVzc2FnZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UoCisgICAgICAgIHBheWxvYWQuc291cmNlLAorICAg
ICAgICBwYXlsb2FkLmxldmVsLAorICAgICAgICBwYXlsb2FkLmxpbmUsCisgICAgICAgIHBheWxv
YWQudXJsLAorICAgICAgICBwYXlsb2FkLmdyb3VwTGV2ZWwsCisgICAgICAgIHBheWxvYWQucmVw
ZWF0Q291bnQpOworICAgIGNvbnNvbGVNZXNzYWdlLnNldE1lc3NhZ2VCb2R5KEFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpOworICAgIHRoaXMuY29uc29sZS5hZGRNZXNz
YWdlKGNvbnNvbGVNZXNzYWdlKTsKIH0KIAogV2ViSW5zcGVjdG9yLmFkZFByb2ZpbGUgPSBmdW5j
dGlvbihwcm9maWxlKQo=
</data>
<flag name="review"
          id="15179"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30240</attachid>
            <date>2009-05-12 10:23:04 -0700</date>
            <delta_ts>2009-05-13 06:42:54 -0700</delta_ts>
            <desc>step_2_patch</desc>
            <filename>json_object.txt</filename>
            <type>text/plain</type>
            <size>19970</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGMxOWM0Mi4uMmNmMmE3NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0wNS0xMiAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgSnNvbk9iamVjdCB0aGF0IHdyYXBzIFNjcmlw
dE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlhbGl6YXRpb24uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDE5CisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAg
ICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZTo6YmluZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlSGVhZGVyc09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QpOgorCiAyMDA5
LTA1LTExICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMzNhYmRhYy4uZDJjNDAzZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCkBAIC0xMDU2LDYgKzEwNTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlLmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQ
cm9maWxlTm9kZS5oIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9Kc29uT2JqZWN0LmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZS5oIFwKIAlXZWJD
b3JlL2xvYWRlci9DYWNoZVBvbGljeS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGRmZTJjZjUuLjY0ZGYwZWYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODEw
LDYgKzgxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwIFwKICAgICBp
bnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCBcCisgICAgaW5zcGVjdG9yL0pzb25P
YmplY3QuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgXAogICAg
IGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IGQ5N2IwNTguLjJlMTcyM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagpAQCAtMTU2NjMsNiArMTU2NjMsMTQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKc29uT2JqZWN0
LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxKc29uT2JqZWN0LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZp
bHRlcg0KIAkJCQlOYW1lPSJmcm9udC1lbmQiDQogCQkJCT4NCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhNWQzNTMuLjI3YTBlOTggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05ODMsNiArOTgzLDggQEAKIAkJ
NzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENF
ODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJN0E2NzRC
REIwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTY3NEJEOTBGOUVCRjRFMDA2
Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLzsgfTsKIAkJN0E2NzRCREMwRjlF
QkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8q
IFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovOyB9OworCQk3QUI2Rjg4NzBGQjlEMjcxMDA4MDVE
MDIgLyogSnNvbk9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSnNvbk9iamVjdC5jcHAgKi87
IH07CisJCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBKc29uT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NjBGQjlEMjcxMDA4
MDVEMDIgLyogSnNvbk9iamVjdC5oICovOyB9OwogCQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQg
LyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NDlGNzc3NTBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBs
aWVyLmggKi87IH07CiAJCTg1MDA0RDk0MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUw
MDREODgwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50LmggKi87IH07CiAJCTg1
MDA0RDk1MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg5MEFDRUVBRUYwMEM0
MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5tbSAqLzsgfTsKQEAgLTU5NDYsNiArNTk0OCw4IEBA
CiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2NzRCRDkwRjlFQkY0RTAwNkNG
MDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VHcm91cExvYWRE
ZWZlcnJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QUI2Rjg4NTBGQjlEMjcx
MDA4MDVEMDIgLyogSnNvbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKc29uT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FC
NkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpzb25PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSnNvbk9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NDlGNzc3NTBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cm9rZVN0eWxlQXBwbGllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NEIyQjFGNzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29y
ZUtleUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk4NEIyQjFGODA1NkJFRjNBMDBEMkI3
NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9yLm07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtOTczNSw2
ICs5NzM5LDggQEAKIAkJCQkxQzgxQjlGRDBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFBy
b2ZpbGUuaCAqLywKIAkJCQkxQzgxQjlGQzBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFBy
b2ZpbGVOb2RlLmNwcCAqLywKIAkJCQkxQzgxQjlGQjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNj
cmlwdFByb2ZpbGVOb2RlLmggKi8sCisJCQkJN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpz
b25PYmplY3QuY3BwICovLAorCQkJCTdBQjZGODg2MEZCOUQyNzEwMDgwNUQwMiAvKiBKc29uT2Jq
ZWN0LmggKi8sCiAJCQkJQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmlu
Z3MuanMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGluc3BlY3RvcjsKQEAgLTE2ODY2LDYgKzE2ODcy
LDcgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jv
b3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNp
YmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIg
LyogSnNvbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODg4MSw2ICsxODg4OCw3IEBACiAJ
CQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVf
dW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8q
IEpzb25PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDRlYmIxOTEu
LjM5OThhMzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dl
YkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC02MzQsNiArNjM0LDcgQEAgVGhpcyBmaWxlIGNv
bnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAogICAgICAgICBpbnNwZWN0b3Iv
SmF2YVNjcmlwdFByb2ZpbGUuY3BwCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZU5vZGUuY3BwCisgICAgICAgIGluc3BlY3Rvci9Kc29uT2JqZWN0LmNwcAogICAgIDwvc2V0Pgog
CiAgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX0xPQURFUiI+CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2lu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggZjNjNTg0MC4uMGNjMDcwMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAKKyNpbmNsdWRlICJKc29u
T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCkBAIC03NiwxNiAr
NzcsMTYgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugcywg
TWVzc2FnZUxldmVsIGwsIFNjcmlwdENhbGxTdGFjayoKIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6
YWRkVG9Db25zb2xlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0
JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAgU2NyaXB0T2JqZWN0IG1lc3NhZ2VPYmogPSBTY3JpcHRP
YmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0
U3RhdGUsICJzb3VyY2UiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fc291cmNlKSk7Ci0gICAgbWVzc2Fn
ZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkp
OwotICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0YXRlLCAibGluZSIsIHN0YXRpY19jYXN0PGlu
dD4obV9saW5lKSk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJ1cmwiLCBtX3Vy
bCk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJncm91cExldmVsIiwgc3RhdGlj
X2Nhc3Q8aW50PihtX2dyb3VwTGV2ZWwpKTsKLSAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0
ZSwgInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7Ci0gICAg
CisgICAgSnNvbk9iamVjdCBqc29uT2JqID0gSnNvbk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0
YXRlKTsKKyAgICBqc29uT2JqLnNldCgic291cmNlIiwgc3RhdGljX2Nhc3Q8aW50PihtX3NvdXJj
ZSkpOworICAgIGpzb25PYmouc2V0KCJsZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkp
OworICAgIGpzb25PYmouc2V0KCJsaW5lIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xpbmUpKTsKKyAg
ICBqc29uT2JqLnNldCgidXJsIiwgbV91cmwpOworICAgIGpzb25PYmouc2V0KCJncm91cExldmVs
Iiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2ZWwpKTsKKyAgICBqc29uT2JqLnNldCgicmVw
ZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKKwogICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAiYWRkTWVz
c2FnZVRvQ29uc29sZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2VPYmop
OworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGpzb25PYmouc2NyaXB0T2JqZWN0KCkpOwog
ICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG1fZnJhbWVzW2ldKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCmluZGV4IDJkZjlhOTUuLjhmOTNjMDAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkpzb25PYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwu
aCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCiAjaW5jbHVkZSAiU2NyaXB0
VmFsdWUuaCIKQEAgLTY3LDE2ICs2OCwxNiBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZTo6YmluZChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdE9iagogICAg
IGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmpl
Y3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSnNvbk9iamVjdCBqc29uT2JqZWN0ID0g
SnNvbk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBTY3JpcHRPYmplY3QgZG9t
U3RvcmFnZTsKICAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1fZnJhbWUuZ2V0
KCksIG1fZG9tU3RvcmFnZS5nZXQoKSwgZG9tU3RvcmFnZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2Up
OwotICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJob3N0IiwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0
KHNjcmlwdFN0YXRlLCAiaXNMb2NhbFN0b3JhZ2UiLCBtX2lzTG9jYWxTdG9yYWdlKTsKKyAgICBq
c29uT2JqZWN0LnNldCgiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2UpOworICAgIGpzb25PYmplY3Qu
c2V0KCJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgp
KTsKKyAgICBqc29uT2JqZWN0LnNldCgiaXNMb2NhbFN0b3JhZ2UiLCBtX2lzTG9jYWxTdG9yYWdl
KTsKIAogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGRET01TdG9yYWdlKHNjcmlwdFN0YXRlLCB3
ZWJJbnNwZWN0b3IsICJhZGRET01TdG9yYWdlIik7Ci0gICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRB
cmd1bWVudChzY3JpcHRPYmplY3QpOworICAgIGFkZERPTVN0b3JhZ2UuYXBwZW5kQXJndW1lbnQo
anNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAgICAgYWRkRE9NU3RvcmFnZS5jYWxsKCk7CiAg
ICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKaW5kZXggNzZjYTgwMS4uMTUxNjBmOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKc29uT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFu
dGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC02MCwxNyArNjEsMTcgQEAgdm9p
ZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0T2JqZWMKICAgICBpZiAoIXNjcmlwdFN0YXRlIHx8IHdlYkluc3BlY3Rv
ci5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdE9iamVjdCBzY3Jp
cHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSnNv
bk9iamVjdCBqc29uT2JqZWN0ID0gSnNvbk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsK
ICAgICBTY3JpcHRPYmplY3QgZGF0YWJhc2U7CiAgICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlw
dE9iamVjdChtX2RhdGFiYXNlLmdldCgpLCBkYXRhYmFzZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGF0YWJhc2UiLCBkYXRhYmFzZSk7Ci0g
ICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFpbiIsIG1fZG9tYWluKTsKLSAg
ICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibmFtZSIsIG1fbmFtZSk7Ci0gICAgc2Ny
aXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInZlcnNpb24iLCBtX3ZlcnNpb24pOworICAgIGpz
b25PYmplY3Quc2V0KCJkYXRhYmFzZSIsIGRhdGFiYXNlKTsKKyAgICBqc29uT2JqZWN0LnNldCgi
ZG9tYWluIiwgbV9kb21haW4pOworICAgIGpzb25PYmplY3Quc2V0KCJuYW1lIiwgbV9uYW1lKTsK
KyAgICBqc29uT2JqZWN0LnNldCgidmVyc2lvbiIsIG1fdmVyc2lvbik7CiAgICAgCiAgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGFkZERhdGFiYXNlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJh
ZGREYXRhYmFzZSIpOwotICAgIGFkZERhdGFiYXNlLmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVj
dCk7CisgICAgYWRkRGF0YWJhc2UuYXBwZW5kQXJndW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmpl
Y3QoKSk7CiAgICAgYWRkRGF0YWJhc2UuY2FsbCgpOwogICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRl
ZCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXgg
MmNlMTljYi4uZDk0ZTk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKc29uT2JqZWN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgpAQCAtMTA1LDExICsxMDYs
MTEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgbV9jaGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKIH0K
IAotc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRT
dGF0ZSwgU2NyaXB0T2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMp
CitzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoSnNvbk9iamVjdCogb2JqZWN0LCBj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogewogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIG9iamVjdC0+c2V0KHNjcmlwdFN0YXRlLCBpdC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5z
ZWNvbmQpOworICAgICAgICBvYmplY3QtPnNldChpdC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5zZWNv
bmQpOwogICAgIH0KIH0KIApAQCAtMTE4LDIwICsxMTksMjAgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
U2NyaXAKICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkgewogICAgICAgICBib29sIGhh
ZEV4Y2VwdGlvbiA9IGZhbHNlOwogCi0gICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3Qg
PSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIFNjcmlwdE9i
amVjdCByZXF1ZXN0SGVhZGVycyA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRl
KTsKLSAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCAmcmVxdWVzdEhl
YWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJyZXF1ZXN0SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKLSAgICAgICAg
c2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlcXVlc3RVUkwiLCByZXF1ZXN0VVJMKCkp
OwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiaG9zdCIsIG1fcmVxdWVz
dFVSTC5ob3N0KCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicGF0
aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlw
dFN0YXRlLCAibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25l
bnQoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJpc01haW5SZXNv
dXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlw
dFN0YXRlLCAiY2FjaGVkIiwgbV9jYWNoZWQpOworICAgICAgICBKc29uT2JqZWN0IGpzb25PYmpl
Y3QgPSBKc29uT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBKc29uT2Jq
ZWN0IHJlcXVlc3RIZWFkZXJzID0gSnNvbk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsK
KyAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXF1ZXN0SGVhZGVycywgbV9yZXF1ZXN0
SGVhZGVyRmllbGRzKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoInJlcXVlc3RIZWFkZXJzIiwg
cmVxdWVzdEhlYWRlcnMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdFVSTCIsIHJl
cXVlc3RVUkwoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9yZXF1ZXN0VVJM
Lmhvc3QoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJwYXRoIiwgbV9yZXF1ZXN0VVJMLnBh
dGgoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVx
dWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImlz
TWFpblJlc291cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0
KCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAgIAogICAgICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgYWRkUmVzb3VyY2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFkZFJlc291cmNlIik7
CiAgICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAg
ICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVjdCk7CisgICAgICAgIGFk
ZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2NyaXB0T2JqZWN0KCkpOwogICAg
ICAgICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlvbik7CiAgICAgICAgIGlmIChoYWRFeGNl
cHRpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTIsNjAgKzE1Myw2MCBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlLCBjb25zdCBTY3JpcAogCiAgICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKIAotICAg
IFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3Jp
cHRTdGF0ZSk7CisgICAgSnNvbk9iamVjdCBqc29uT2JqZWN0ID0gSnNvbk9iamVjdDo6Y3JlYXRl
TmV3KHNjcmlwdFN0YXRlKTsKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXF1ZXN0Q2hh
bmdlKSkgewotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAidXJsIiwgcmVx
dWVzdFVSTCgpKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFp
biIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlw
dFN0YXRlLCAicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwotICAgICAgICBzY3JpcHRPYmpl
Y3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFz
dFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCByZXF1ZXN0SGVhZGVycyA9
IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVI
ZWFkZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCAmcmVxdWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRl
ckZpZWxkcyk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXF1ZXN0
SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgIm1haW5SZXNvdXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOwotICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkUmVxdWVzdENoYW5nZSIsIHRydWUpOworICAg
ICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwgcmVxdWVzdFVSTCgpKTsKKyAgICAgICAganNvbk9i
amVjdC5zZXQoImRvbWFpbiIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOworICAgICAgICBqc29uT2Jq
ZWN0LnNldCgicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOworICAgICAgICBqc29uT2JqZWN0
LnNldCgibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQo
KSk7CisgICAgICAgIEpzb25PYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBKc29uT2JqZWN0OjpjcmVh
dGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVl
c3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOworICAgICAgICBqc29uT2JqZWN0LnNl
dCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7CisgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJlc291cmNlKTsKKyAgICAgICAganNvbk9iamVj
dC5zZXQoImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFu
Z2VzLmhhc0NoYW5nZShSZXNwb25zZUNoYW5nZSkpIHsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNl
dChzY3JpcHRTdGF0ZSwgIm1pbWVUeXBlIiwgbV9taW1lVHlwZSk7Ci0gICAgICAgIHNjcmlwdE9i
amVjdC5zZXQoc2NyaXB0U3RhdGUsICJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmls
ZW5hbWUpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZXhwZWN0ZWRD
b250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgpOwotICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhdHVzQ29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2Rl
KTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVu
YW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25z
ZUhlYWRlcnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAg
IHBvcHVsYXRlSGVhZGVyc09iamVjdChzY3JpcHRTdGF0ZSwgJnJlc3BvbnNlSGVhZGVycywgbV9y
ZXNwb25zZUhlYWRlckZpZWxkcyk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3Rh
dGUsICJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOwotICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKKyAgICAg
ICAganNvbk9iamVjdC5zZXQoIm1pbWVUeXBlIiwgbV9taW1lVHlwZSk7CisgICAgICAgIGpzb25P
YmplY3Quc2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOworICAg
ICAgICBqc29uT2JqZWN0LnNldCgiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgpOworICAgICAgICBqc29uT2JqZWN0LnNldCgic3RhdHVzQ29kZSIsIG1fcmVz
cG9uc2VTdGF0dXNDb2RlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoInN1Z2dlc3RlZEZpbGVu
YW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIEpzb25PYmplY3QgcmVzcG9uc2VI
ZWFkZXJzID0gSnNvbk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICAgICAgcG9w
dWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVs
ZHMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VI
ZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1
ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoVHlwZUNoYW5nZSkpIHsK
LSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInR5cGUiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHR5cGUoKSkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAi
ZGlkVHlwZUNoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgidHlwZSIsIHN0
YXRpY19jYXN0PGludD4odHlwZSgpKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRUeXBl
Q2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdl
KExlbmd0aENoYW5nZSkpIHsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwg
ImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2Ny
aXB0U3RhdGUsICJkaWRMZW5ndGhDaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5z
ZXQoImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJk
aWRMZW5ndGhDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0No
YW5nZShDb21wbGV0aW9uQ2hhbmdlKSkgewotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlw
dFN0YXRlLCAiZmFpbGVkIiwgbV9mYWlsZWQpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNj
cmlwdFN0YXRlLCAiZmluaXNoZWQiLCBtX2ZpbmlzaGVkKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0
LnNldChzY3JpcHRTdGF0ZSwgImRpZENvbXBsZXRpb25DaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAg
anNvbk9iamVjdC5zZXQoImZhaWxlZCIsIG1fZmFpbGVkKTsKKyAgICAgICAganNvbk9iamVjdC5z
ZXQoImZpbmlzaGVkIiwgbV9maW5pc2hlZCk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRD
b21wbGV0aW9uQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXND
aGFuZ2UoVGltaW5nQ2hhbmdlKSkgewogICAgICAgICBpZiAobV9zdGFydFRpbWUgPiAwKQotICAg
ICAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInN0YXJ0VGltZSIsIG1fc3Rh
cnRUaW1lKTsKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdGFydFRpbWUiLCBtX3N0YXJ0
VGltZSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID4gMCkKLSAgICAgICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXNwb25zZVJlY2VpdmVkVGltZSIs
IG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUpOworICAgICAgICAgICAganNvbk9iamVjdC5zZXQoInJl
c3BvbnNlUmVjZWl2ZWRUaW1lIiwgbV9yZXNwb25zZVJlY2VpdmVkVGltZSk7CiAgICAgICAgIGlm
IChtX2VuZFRpbWUgPiAwKQotICAgICAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0
ZSwgImVuZFRpbWUiLCBtX2VuZFRpbWUpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlw
dFN0YXRlLCAiZGlkVGltaW5nQ2hhbmdlIiwgdHJ1ZSk7CisgICAgICAgICAgICBqc29uT2JqZWN0
LnNldCgiZW5kVGltZSIsIG1fZW5kVGltZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRU
aW1pbmdDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IHVwZGF0ZVJlc291cmNlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJ1cGRhdGVSZXNvdXJj
ZSIpOwogICAgIHVwZGF0ZVJlc291cmNlLmFwcGVuZEFyZ3VtZW50KG1faWRlbnRpZmllcik7Ci0g
ICAgdXBkYXRlUmVzb3VyY2UuYXBwZW5kQXJndW1lbnQoc2NyaXB0T2JqZWN0KTsKKyAgICB1cGRh
dGVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKICAg
ICB1cGRhdGVSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlv
bikKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30273</attachid>
            <date>2009-05-13 06:42:54 -0700</date>
            <delta_ts>2009-05-13 06:45:10 -0700</delta_ts>
            <desc>step_2_patch</desc>
            <filename>json_object_2.txt</filename>
            <type>text/plain</type>
            <size>26294</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGMxOWM0Mi4uMDYwZmY3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wNS0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgSlNPTk9iamVjdCB0aGF0IHdyYXBzIFNjcmlw
dE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlhbGl6YXRpb24KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0MTkKKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAg
ICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVIZWFkZXJzT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
T05PYmplY3Q6OkpTT05PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNPTk9iamVjdDo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU09OT2JqZWN0OjpjcmVhdGVOZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9K
U09OT2JqZWN0Lmg6IEFkZGVkLgorCiAyMDA5LTA1LTExICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMzNhYmRhYy4uNmJhNWI4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDU2LDYgKzEwNTYsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxl
LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgXAogCVdl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKKwlXZWJDb3JlL2luc3Bl
Y3Rvci9KU09OT2JqZWN0LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKIAlXZWJD
b3JlL2xvYWRlci9DYWNoZS5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZVBvbGljeS5oIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IGRmZTJjZjUuLjY0ZGYwZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODEwLDYgKzgxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSmF2
YVNjcmlwdFByb2ZpbGUuY3BwIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmNwcCBcCisgICAgaW5zcGVjdG9yL0pzb25PYmplY3QuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQ5N2IwNTguLmEzNjg0
ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTU2NjMsNiArMTU2
NjMsMTQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxKU09OT2JqZWN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKU09OT2JqZWN0LmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJmcm9udC1lbmQiDQog
CQkJCT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBh
NWQzNTMuLjVjMDMwOTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05ODMsNiArOTgzLDggQEAKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERP
TU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50
SW50ZXJuYWwuaCAqLzsgfTsKIAkJN0E2NzRCREIwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91
cExvYWREZWZlcnJlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVy
LmNwcCAqLzsgfTsKIAkJN0E2NzRCREMwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWRE
ZWZlcnJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovOyB9
OworCQk3QUI2Rjg4NzBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NTBGQjlEMjcxMDA4
MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgKi87IH07CisJCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQw
MiAvKiBKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovOyB9Owog
CQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDlGNzc3NTBFRkVDNjIw
MDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggKi87IH07CiAJCTg1MDA0RDk0MEFDRUVB
RUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREODgwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNW
R0RlZnNFbGVtZW50LmggKi87IH07CiAJCTg1MDA0RDk1MEFDRUVBRUYwMEM0MzhGNiAvKiBET01T
VkdEZWZzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDA0RDg5MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5tbSAq
LzsgfTsKQEAgLTU5NDYsNiArNTk0OCw4IEBACiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAv
KiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVm
ZXJyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTY3NEJEQTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VHcm91cExvYWREZWZlcnJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09OT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05P
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDlGNzc3NTBFRkVDNjIwMDA5MDg0OUQgLyog
U3Ryb2tlU3R5bGVBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cm9rZVN0eWxlQXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEIyQjFG
NzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQk4NEIyQjFGODA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJD
b3JlS2V5R2VuZXJhdG9yLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwpAQCAtOTczNSw2ICs5NzM5LDggQEAKIAkJCQkxQzgxQjlGRDBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCAqLywKIAkJCQkxQzgxQjlGQzBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLywKIAkJCQkxQzgxQjlG
QjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggKi8sCisJCQkJN0FC
NkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovLAorCQkJCTdBQjZGODg2
MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggKi8sCiAJCQkJQkNDNjRGNUYwRENGQjg0
RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlu
c3BlY3RvcjsKQEAgLTE2ODY2LDYgKzE2ODcyLDcgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3
RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xODg4MSw2ICsxODg4OCw3IEBACiAJCQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8q
IHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQw
OTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29y
ZVNvdXJjZXMuYmtsCmluZGV4IDRlYmIxOTEuLjMxZTU5NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC02
MzQsNiArNjM0LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRl
ZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2Vy
dmVyLmNwcAogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCiAgICAgICAg
IGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCisgICAgICAgIGluc3BlY3Rvci9K
U09OT2JqZWN0LmNwcAogICAgIDwvc2V0PgogCiAgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VC
Q09SRV9TT1VSQ0VTX0xPQURFUiI+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggZjNjNTg0MC4uMGQ1MjUxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnNvbGVN
ZXNzYWdlLmgiCiAKKyNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RnVuY3Rpb25DYWxsLmgiCkBAIC03NiwxNiArNzcsMTYgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZUxldmVsIGwsIFNjcmlwdENhbGxTdGFj
ayoKIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAgU2NyaXB0
T2JqZWN0IG1lc3NhZ2VPYmogPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7
Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJzb3VyY2UiLCBzdGF0aWNfY2FzdDxp
bnQ+KG1fc291cmNlKSk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsZXZlbCIs
IHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkpOwotICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0
YXRlLCAibGluZSIsIHN0YXRpY19jYXN0PGludD4obV9saW5lKSk7Ci0gICAgbWVzc2FnZU9iai5z
ZXQoc2NyaXB0U3RhdGUsICJ1cmwiLCBtX3VybCk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0
U3RhdGUsICJncm91cExldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2ZWwpKTsKLSAg
ICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8
aW50PihtX3JlcGVhdENvdW50KSk7Ci0gICAgCisgICAgSlNPTk9iamVjdCBqc29uT2JqID0gSlNP
Tk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBqc29uT2JqLnNldCgic291cmNl
Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3NvdXJjZSkpOworICAgIGpzb25PYmouc2V0KCJsZXZlbCIs
IHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkpOworICAgIGpzb25PYmouc2V0KCJsaW5lIiwgc3Rh
dGljX2Nhc3Q8aW50PihtX2xpbmUpKTsKKyAgICBqc29uT2JqLnNldCgidXJsIiwgbV91cmwpOwor
ICAgIGpzb25PYmouc2V0KCJncm91cExldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2
ZWwpKTsKKyAgICBqc29uT2JqLnNldCgicmVwZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
cmVwZWF0Q291bnQpKTsKKwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihzY3JpcHRT
dGF0ZSwgd2ViSW5zcGVjdG9yLCAiYWRkTWVzc2FnZVRvQ29uc29sZSIpOwotICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2VPYmopOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGpzb25PYmouc2NyaXB0T2JqZWN0KCkpOwogICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkK
ICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1fZnJhbWVzW2ldKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCmluZGV4
IDJkZjlhOTUuLmFmYmJhNWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNp
bmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFy
YW50aW5lLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTY3LDE2ICs2OCwxNiBAQCB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6YmluZChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IFNjcmlwdE9iagogICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVj
dG9yLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFNjcmlwdE9iamVj
dCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7Cisg
ICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0
YXRlKTsKICAgICBTY3JpcHRPYmplY3QgZG9tU3RvcmFnZTsKICAgICBpZiAoIWdldFF1YXJhbnRp
bmVkU2NyaXB0T2JqZWN0KG1fZnJhbWUuZ2V0KCksIG1fZG9tU3RvcmFnZS5nZXQoKSwgZG9tU3Rv
cmFnZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2UpOwotICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0
U3RhdGUsICJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9z
dCgpKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiaXNMb2NhbFN0b3JhZ2Ui
LCBtX2lzTG9jYWxTdG9yYWdlKTsKKyAgICBqc29uT2JqZWN0LnNldCgiZG9tU3RvcmFnZSIsIGRv
bVN0b3JhZ2UpOworICAgIGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpKTsKKyAgICBqc29uT2JqZWN0LnNldCgiaXNMb2Nh
bFN0b3JhZ2UiLCBtX2lzTG9jYWxTdG9yYWdlKTsKIAogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBh
ZGRET01TdG9yYWdlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRET01TdG9yYWdlIik7
Ci0gICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVudChzY3JpcHRPYmplY3QpOworICAgIGFk
ZERPTVN0b3JhZ2UuYXBwZW5kQXJndW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAg
ICAgYWRkRE9NU3RvcmFnZS5jYWxsKCk7CiAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKaW5kZXggNzZjYTgwMS4uMjYyODA4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCkBAIC02MCwxNyArNjEsMTcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpi
aW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWMKICAgICBpZiAo
IXNjcmlwdFN0YXRlIHx8IHdlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0
ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBTY3JpcHRPYmplY3QgZGF0YWJhc2U7CiAg
ICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChtX2RhdGFiYXNlLmdldCgpLCBkYXRh
YmFzZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAiZGF0YWJhc2UiLCBkYXRhYmFzZSk7Ci0gICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0
ZSwgImRvbWFpbiIsIG1fZG9tYWluKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAibmFtZSIsIG1fbmFtZSk7Ci0gICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInZl
cnNpb24iLCBtX3ZlcnNpb24pOworICAgIGpzb25PYmplY3Quc2V0KCJkYXRhYmFzZSIsIGRhdGFi
YXNlKTsKKyAgICBqc29uT2JqZWN0LnNldCgiZG9tYWluIiwgbV9kb21haW4pOworICAgIGpzb25P
YmplY3Quc2V0KCJuYW1lIiwgbV9uYW1lKTsKKyAgICBqc29uT2JqZWN0LnNldCgidmVyc2lvbiIs
IG1fdmVyc2lvbik7CiAgICAgCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGFkZERhdGFiYXNlKHNj
cmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGREYXRhYmFzZSIpOwotICAgIGFkZERhdGFiYXNl
LmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVjdCk7CisgICAgYWRkRGF0YWJhc2UuYXBwZW5kQXJn
dW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAgICAgYWRkRGF0YWJhc2UuY2FsbCgp
OwogICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggMmNlMTljYi4uNDM4MDU4MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0
aW9uQ2FsbC5oIgpAQCAtMTA1LDExICsxMDYsMTEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6
dXBkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgbV9j
aGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKIH0KIAotc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJz
T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KiBvYmplY3QsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNP
YmplY3QoSlNPTk9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQog
ewogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7
CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIG9iamVjdC0+c2V0KHNjcmlwdFN0YXRl
LCBpdC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5zZWNvbmQpOworICAgICAgICBvYmplY3QtPnNldChp
dC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5zZWNvbmQpOwogICAgIH0KIH0KIApAQCAtMTE4LDIwICsx
MTksMjAgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXAKICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0
Q3JlYXRlZCkgewogICAgICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogCi0gICAgICAg
IFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3Jp
cHRTdGF0ZSk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCByZXF1ZXN0SGVhZGVycyA9IFNjcmlwdE9i
amVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2Jq
ZWN0KHNjcmlwdFN0YXRlLCAmcmVxdWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7
Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXF1ZXN0SGVhZGVycyIs
IHJlcXVlc3RIZWFkZXJzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwg
InJlcXVlc3RVUkwiLCByZXF1ZXN0VVJMKCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNj
cmlwdFN0YXRlLCAiaG9zdCIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwotICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhDb21wb25lbnQiLCBt
X3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5z
ZXQoc2NyaXB0U3RhdGUsICJpc01haW5SZXNvdXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiY2FjaGVkIiwgbV9jYWNoZWQpOwor
ICAgICAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2Ny
aXB0U3RhdGUpOworICAgICAgICBKU09OT2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gSlNPTk9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0
KCZyZXF1ZXN0SGVhZGVycywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKKyAgICAgICAganNvbk9i
amVjdC5zZXQoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOworICAgICAgICBqc29u
T2JqZWN0LnNldCgicmVxdWVzdFVSTCIsIHJlcXVlc3RVUkwoKSk7CisgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7CisgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJwYXRoIiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0
KCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsK
KyAgICAgICAganNvbk9iamVjdC5zZXQoImlzTWFpblJlc291cmNlIiwgbV9pc01haW5SZXNvdXJj
ZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAg
IAogICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgYWRkUmVzb3VyY2Uoc2NyaXB0U3RhdGUsIHdl
Ykluc3BlY3RvciwgImFkZFJlc291cmNlIik7CiAgICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFy
Z3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50
KHNjcmlwdE9iamVjdCk7CisgICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KGpzb25P
YmplY3Quc2NyaXB0T2JqZWN0KCkpOwogICAgICAgICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2Vw
dGlvbik7CiAgICAgICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNTIsNjAgKzE1Myw2MCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRP
YmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogCiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKIAotICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBT
Y3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBqc29u
T2JqZWN0ID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBpZiAobV9j
aGFuZ2VzLmhhc0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgewotICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAidXJsIiwgcmVxdWVzdFVSTCgpKTsKLSAgICAgICAgc2NyaXB0T2Jq
ZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFpbiIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicGF0aCIsIG1fcmVxdWVzdFVSTC5w
YXRoKCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhD
b21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIFNj
cmlwdE9iamVjdCByZXF1ZXN0SGVhZGVycyA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlw
dFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCAmcmVx
dWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7Ci0gICAgICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJyZXF1ZXN0SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKLSAg
ICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgIm1haW5SZXNvdXJjZSIsIG1faXNN
YWluUmVzb3VyY2UpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlk
UmVxdWVzdENoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwgcmVx
dWVzdFVSTCgpKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRvbWFpbiIsIG1fcmVxdWVzdFVS
TC5ob3N0KCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgicGF0aCIsIG1fcmVxdWVzdFVSTC5w
YXRoKCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgibGFzdFBhdGhDb21wb25lbnQiLCBtX3Jl
cXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAgICAgIEpTT05PYmplY3QgcmVxdWVz
dEhlYWRlcnMgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBw
b3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVs
ZHMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVh
ZGVycyk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJl
c291cmNlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVl
KTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXNwb25zZUNoYW5nZSkp
IHsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgIm1pbWVUeXBlIiwgbV9t
aW1lVHlwZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJzdWdnZXN0
ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGgpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhdHVz
Q29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2RlKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChz
Y3JpcHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0g
ICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0
ZU5ldyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdChzY3JpcHRT
dGF0ZSwgJnJlc3BvbnNlSGVhZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7Ci0gICAgICAg
IHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25z
ZUhlYWRlcnMpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkUmVz
cG9uc2VDaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoIm1pbWVUeXBlIiwg
bV9taW1lVHlwZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIs
IG1fc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZXhwZWN0ZWRD
b250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBqc29uT2Jq
ZWN0LnNldCgic3RhdHVzQ29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2RlKTsKKyAgICAgICAganNv
bk9iamVjdC5zZXQoInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Cisg
ICAgICAgIEpTT05PYmplY3QgcmVzcG9uc2VIZWFkZXJzID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3
KHNjcmlwdFN0YXRlKTsKKyAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhl
YWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgi
cmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVjdC5z
ZXQoImRpZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdl
cy5oYXNDaGFuZ2UoVHlwZUNoYW5nZSkpIHsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgInR5cGUiLCBzdGF0aWNfY2FzdDxpbnQ+KHR5cGUoKSkpOwotICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkVHlwZUNoYW5nZSIsIHRydWUpOworICAgICAg
ICBqc29uT2JqZWN0LnNldCgidHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSk7CisgICAg
ICAgIGpzb25PYmplY3Quc2V0KCJkaWRUeXBlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogICAgIAog
ICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKExlbmd0aENoYW5nZSkpIHsKLSAgICAgICAgc2Ny
aXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7Ci0g
ICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRMZW5ndGhDaGFuZ2UiLCB0
cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7
CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRMZW5ndGhDaGFuZ2UiLCB0cnVlKTsKICAgICB9
CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShDb21wbGV0aW9uQ2hhbmdlKSkgewotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZmFpbGVkIiwgbV9mYWlsZWQpOwot
ICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZmluaXNoZWQiLCBtX2Zpbmlz
aGVkKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRpZENvbXBsZXRp
b25DaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImZhaWxlZCIsIG1fZmFp
bGVkKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImZpbmlzaGVkIiwgbV9maW5pc2hlZCk7Cisg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRDb21wbGV0aW9uQ2hhbmdlIiwgdHJ1ZSk7CiAgICAg
fQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoVGltaW5nQ2hhbmdlKSkgewogICAgICAg
ICBpZiAobV9zdGFydFRpbWUgPiAwKQotICAgICAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgInN0YXJ0VGltZSIsIG1fc3RhcnRUaW1lKTsKKyAgICAgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJzdGFydFRpbWUiLCBtX3N0YXJ0VGltZSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNl
UmVjZWl2ZWRUaW1lID4gMCkKLSAgICAgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3Rh
dGUsICJyZXNwb25zZVJlY2VpdmVkVGltZSIsIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUpOworICAg
ICAgICAgICAganNvbk9iamVjdC5zZXQoInJlc3BvbnNlUmVjZWl2ZWRUaW1lIiwgbV9yZXNwb25z
ZVJlY2VpdmVkVGltZSk7CiAgICAgICAgIGlmIChtX2VuZFRpbWUgPiAwKQotICAgICAgICAgICAg
c2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImVuZFRpbWUiLCBtX2VuZFRpbWUpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkVGltaW5nQ2hhbmdlIiwgdHJ1
ZSk7CisgICAgICAgICAgICBqc29uT2JqZWN0LnNldCgiZW5kVGltZSIsIG1fZW5kVGltZSk7Cisg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRUaW1pbmdDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAg
ICAgCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIHVwZGF0ZVJlc291cmNlKHNjcmlwdFN0YXRlLCB3
ZWJJbnNwZWN0b3IsICJ1cGRhdGVSZXNvdXJjZSIpOwogICAgIHVwZGF0ZVJlc291cmNlLmFwcGVu
ZEFyZ3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgdXBkYXRlUmVzb3VyY2UuYXBwZW5kQXJndW1l
bnQoc2NyaXB0T2JqZWN0KTsKKyAgICB1cGRhdGVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChqc29u
T2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKICAgICB1cGRhdGVSZXNvdXJjZS5jYWxsKGhhZEV4Y2Vw
dGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9K
U09OT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTNkZGVl
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAKQEAg
LTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNPTk9iamVjdC5o
IgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pT
T05PYmplY3Q6OkpTT05PYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQorICAgIDogbV9z
Y3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKK3sKKyAgICBtX3NjcmlwdE9iamVjdCA9IFNjcmlwdE9i
amVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBt
X3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29s
IEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFt
ZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBKU09OT2JqZWN0JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2V0KG5hbWUsIHZhbHVlLnNj
cmlwdE9iamVjdCgpKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0
KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9i
amVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmpl
Y3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJu
IG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Cit9CisKK2Jv
b2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30K
KworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVl
KTsKK30KKworU2NyaXB0T2JqZWN0IEpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0OworfQorCitKU09OT2JqZWN0IEpTT05PYmplY3Q6
OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgcmV0dXJuIEpTT05P
YmplY3Qoc2NyaXB0U3RhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmggYi9XZWJDb3JlL2luc3BlY3Rvci9K
U09OT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllNjRmMAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKworI2lmbmRlZiBKU09OT2JqZWN0X2gKKyNkZWZpbmUgSlNPTk9iamVjdF9oCisK
KyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU3RyaW5nOworCisgICAgY2xhc3MgSlNPTk9i
amVjdCB7CisgICAgcHVibGljOgorICAgICAgICBib29sIHNldChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBKU09OT2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFNjcmlwdE9iamVjdCYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgZG91YmxlKTsK
KyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsKKyAgICAgICAg
Ym9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgaW50KTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3Qg
Y2hhciogbmFtZSwgYm9vbCk7CisgICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QoKSBj
b25zdDsKKworICAgICAgICBzdGF0aWMgSlNPTk9iamVjdCBjcmVhdGVOZXcoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKTsKKyAgICBwcml2YXRlOgorICAgICAgICBKU09OT2JqZWN0KFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSk7CisgICAgICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwor
ICAgICAgICBTY3JpcHRPYmplY3QgbV9zY3JpcHRPYmplY3Q7CisgICAgfTsKK30KKworI2VuZGlm
IC8vIEpTT05PYmplY3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30274</attachid>
            <date>2009-05-13 06:45:10 -0700</date>
            <delta_ts>2009-05-19 09:15:08 -0700</delta_ts>
            <desc>step_2_patch</desc>
            <filename>json_object_2.txt</filename>
            <type>text/plain</type>
            <size>26294</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MGMxOWM0Mi4uMDYwZmY3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wNS0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgSlNPTk9iamVjdCB0aGF0IHdyYXBzIFNjcmlw
dE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlhbGl6YXRpb24KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0MTkKKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAg
ICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVIZWFkZXJzT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
T05PYmplY3Q6OkpTT05PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNPTk9iamVjdDo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU09OT2JqZWN0OjpjcmVhdGVOZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9K
U09OT2JqZWN0Lmg6IEFkZGVkLgorCiAyMDA5LTA1LTExICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KaW5kZXggMzNhYmRhYy4uNmJhNWI4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDU2LDYgKzEwNTYsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxl
LmggXAogCVdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgXAogCVdl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5oIFwKKwlXZWJDb3JlL2luc3Bl
Y3Rvci9KU09OT2JqZWN0LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIFwKIAlXZWJD
b3JlL2xvYWRlci9DYWNoZS5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZVBvbGljeS5oIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4
IGRmZTJjZjUuLmExYTFkMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODEwLDYgKzgxMCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSmF2
YVNjcmlwdFByb2ZpbGUuY3BwIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGVOb2Rl
LmNwcCBcCisgICAgaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5jcHAgXAogICAgIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQ5N2IwNTguLmEzNjg0
ZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTU2NjMsNiArMTU2
NjMsMTQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxKU09OT2JqZWN0LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxKU09OT2JqZWN0LmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQogCQkJPEZpbHRlcg0KIAkJCQlOYW1lPSJmcm9udC1lbmQiDQog
CQkJCT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBh
NWQzNTMuLjVjMDMwOTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC05ODMsNiArOTgzLDggQEAKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERP
TU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50
SW50ZXJuYWwuaCAqLzsgfTsKIAkJN0E2NzRCREIwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91
cExvYWREZWZlcnJlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVy
LmNwcCAqLzsgfTsKIAkJN0E2NzRCREMwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWRE
ZWZlcnJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovOyB9
OworCQk3QUI2Rjg4NzBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NTBGQjlEMjcxMDA4
MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgKi87IH07CisJCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQw
MiAvKiBKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUI2Rjg4NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovOyB9Owog
CQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDlGNzc3NTBFRkVDNjIw
MDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggKi87IH07CiAJCTg1MDA0RDk0MEFDRUVB
RUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREODgwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNW
R0RlZnNFbGVtZW50LmggKi87IH07CiAJCTg1MDA0RDk1MEFDRUVBRUYwMEM0MzhGNiAvKiBET01T
VkdEZWZzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg1MDA0RDg5MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5tbSAq
LzsgfTsKQEAgLTU5NDYsNiArNTk0OCw4IEBACiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAv
KiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVm
ZXJyZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTY3NEJEQTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VHcm91cExvYWREZWZlcnJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QUI2Rjg4NTBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09OT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05P
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTk9iamVjdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NDlGNzc3NTBFRkVDNjIwMDA5MDg0OUQgLyog
U3Ryb2tlU3R5bGVBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cm9rZVN0eWxlQXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEIyQjFG
NzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQk4NEIyQjFGODA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJD
b3JlS2V5R2VuZXJhdG9yLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwpAQCAtOTczNSw2ICs5NzM5LDggQEAKIAkJCQkxQzgxQjlGRDBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuaCAqLywKIAkJCQkxQzgxQjlGQzBFOTcz
M0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmNwcCAqLywKIAkJCQkxQzgxQjlG
QjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGVOb2RlLmggKi8sCisJCQkJN0FC
NkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovLAorCQkJCTdBQjZGODg2
MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggKi8sCiAJCQkJQkNDNjRGNUYwRENGQjg0
RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlu
c3BlY3RvcjsKQEAgLTE2ODY2LDYgKzE2ODcyLDcgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3
QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3
RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5
RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0xODg4MSw2ICsxODg4OCw3IEBACiAJCQkJMUE1NjlEMjIwRDdFMkI4MjAwN0MzOTgzIC8q
IHJ1bnRpbWVfb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDI0MEQ3RTJCODIw
MDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQw
OTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2libGVfdW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
N0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29y
ZVNvdXJjZXMuYmtsCmluZGV4IDRlYmIxOTEuLjMxZTU5NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCkBAIC02
MzQsNiArNjM0LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRl
ZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2Vy
dmVyLmNwcAogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdFByb2ZpbGUuY3BwCiAgICAgICAg
IGluc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwCisgICAgICAgIGluc3BlY3Rvci9K
U09OT2JqZWN0LmNwcAogICAgIDwvc2V0PgogCiAgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VC
Q09SRV9TT1VSQ0VTX0xPQURFUiI+CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5k
ZXggZjNjNTg0MC4uMGQ1MjUxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnNvbGVN
ZXNzYWdlLmgiCiAKKyNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2Fs
bFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RnVuY3Rpb25DYWxsLmgiCkBAIC03NiwxNiArNzcsMTYgQEAgQ29uc29sZU1lc3NhZ2U6OkNvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZUxldmVsIGwsIFNjcmlwdENhbGxTdGFj
ayoKIAogdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAgU2NyaXB0
T2JqZWN0IG1lc3NhZ2VPYmogPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7
Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJzb3VyY2UiLCBzdGF0aWNfY2FzdDxp
bnQ+KG1fc291cmNlKSk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsZXZlbCIs
IHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkpOwotICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0
YXRlLCAibGluZSIsIHN0YXRpY19jYXN0PGludD4obV9saW5lKSk7Ci0gICAgbWVzc2FnZU9iai5z
ZXQoc2NyaXB0U3RhdGUsICJ1cmwiLCBtX3VybCk7Ci0gICAgbWVzc2FnZU9iai5zZXQoc2NyaXB0
U3RhdGUsICJncm91cExldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2ZWwpKTsKLSAg
ICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8
aW50PihtX3JlcGVhdENvdW50KSk7Ci0gICAgCisgICAgSlNPTk9iamVjdCBqc29uT2JqID0gSlNP
Tk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBqc29uT2JqLnNldCgic291cmNl
Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3NvdXJjZSkpOworICAgIGpzb25PYmouc2V0KCJsZXZlbCIs
IHN0YXRpY19jYXN0PGludD4obV9sZXZlbCkpOworICAgIGpzb25PYmouc2V0KCJsaW5lIiwgc3Rh
dGljX2Nhc3Q8aW50PihtX2xpbmUpKTsKKyAgICBqc29uT2JqLnNldCgidXJsIiwgbV91cmwpOwor
ICAgIGpzb25PYmouc2V0KCJncm91cExldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2dyb3VwTGV2
ZWwpKTsKKyAgICBqc29uT2JqLnNldCgicmVwZWF0Q291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
cmVwZWF0Q291bnQpKTsKKwogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihzY3JpcHRT
dGF0ZSwgd2ViSW5zcGVjdG9yLCAiYWRkTWVzc2FnZVRvQ29uc29sZSIpOwotICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2VPYmopOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGpzb25PYmouc2NyaXB0T2JqZWN0KCkpOwogICAgIGlmICghbV9mcmFtZXMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkK
ICAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1fZnJhbWVzW2ldKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCmluZGV4
IDJkZjlhOTUuLmFmYmJhNWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNp
bmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFy
YW50aW5lLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTY3LDE2ICs2OCwxNiBAQCB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6YmluZChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IFNjcmlwdE9iagogICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVj
dG9yLmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFNjcmlwdE9iamVj
dCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7Cisg
ICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0
YXRlKTsKICAgICBTY3JpcHRPYmplY3QgZG9tU3RvcmFnZTsKICAgICBpZiAoIWdldFF1YXJhbnRp
bmVkU2NyaXB0T2JqZWN0KG1fZnJhbWUuZ2V0KCksIG1fZG9tU3RvcmFnZS5nZXQoKSwgZG9tU3Rv
cmFnZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2UpOwotICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0
U3RhdGUsICJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9z
dCgpKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiaXNMb2NhbFN0b3JhZ2Ui
LCBtX2lzTG9jYWxTdG9yYWdlKTsKKyAgICBqc29uT2JqZWN0LnNldCgiZG9tU3RvcmFnZSIsIGRv
bVN0b3JhZ2UpOworICAgIGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpKTsKKyAgICBqc29uT2JqZWN0LnNldCgiaXNMb2Nh
bFN0b3JhZ2UiLCBtX2lzTG9jYWxTdG9yYWdlKTsKIAogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBh
ZGRET01TdG9yYWdlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRET01TdG9yYWdlIik7
Ci0gICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVudChzY3JpcHRPYmplY3QpOworICAgIGFk
ZERPTVN0b3JhZ2UuYXBwZW5kQXJndW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAg
ICAgYWRkRE9NU3RvcmFnZS5jYWxsKCk7CiAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKaW5kZXggNzZjYTgwMS4uMjYyODA4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCkBAIC02MCwxNyArNjEsMTcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpi
aW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWMKICAgICBpZiAo
IXNjcmlwdFN0YXRlIHx8IHdlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0
ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBTY3JpcHRPYmplY3QgZGF0YWJhc2U7CiAg
ICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChtX2RhdGFiYXNlLmdldCgpLCBkYXRh
YmFzZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAiZGF0YWJhc2UiLCBkYXRhYmFzZSk7Ci0gICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0
ZSwgImRvbWFpbiIsIG1fZG9tYWluKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAibmFtZSIsIG1fbmFtZSk7Ci0gICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInZl
cnNpb24iLCBtX3ZlcnNpb24pOworICAgIGpzb25PYmplY3Quc2V0KCJkYXRhYmFzZSIsIGRhdGFi
YXNlKTsKKyAgICBqc29uT2JqZWN0LnNldCgiZG9tYWluIiwgbV9kb21haW4pOworICAgIGpzb25P
YmplY3Quc2V0KCJuYW1lIiwgbV9uYW1lKTsKKyAgICBqc29uT2JqZWN0LnNldCgidmVyc2lvbiIs
IG1fdmVyc2lvbik7CiAgICAgCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGFkZERhdGFiYXNlKHNj
cmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGREYXRhYmFzZSIpOwotICAgIGFkZERhdGFiYXNl
LmFwcGVuZEFyZ3VtZW50KHNjcmlwdE9iamVjdCk7CisgICAgYWRkRGF0YWJhc2UuYXBwZW5kQXJn
dW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAgICAgYWRkRGF0YWJhc2UuY2FsbCgp
OwogICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5jcHAKaW5kZXggMmNlMTljYi4uNDM4MDU4MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkRvY0xvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0
aW9uQ2FsbC5oIgpAQCAtMTA1LDExICsxMDYsMTEgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6
dXBkYXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgbV9j
aGFuZ2VzLnNldChUeXBlQ2hhbmdlKTsKIH0KIAotc3RhdGljIHZvaWQgcG9wdWxhdGVIZWFkZXJz
T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KiBvYmplY3QsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNP
YmplY3QoSlNPTk9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQog
ewogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7
CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIG9iamVjdC0+c2V0KHNjcmlwdFN0YXRl
LCBpdC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5zZWNvbmQpOworICAgICAgICBvYmplY3QtPnNldChp
dC0+Zmlyc3Quc3RyaW5nKCksIGl0LT5zZWNvbmQpOwogICAgIH0KIH0KIApAQCAtMTE4LDIwICsx
MTksMjAgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXAKICAgICBpZiAoIW1fc2NyaXB0T2JqZWN0
Q3JlYXRlZCkgewogICAgICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogCi0gICAgICAg
IFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBTY3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3Jp
cHRTdGF0ZSk7Ci0gICAgICAgIFNjcmlwdE9iamVjdCByZXF1ZXN0SGVhZGVycyA9IFNjcmlwdE9i
amVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2Jq
ZWN0KHNjcmlwdFN0YXRlLCAmcmVxdWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7
Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXF1ZXN0SGVhZGVycyIs
IHJlcXVlc3RIZWFkZXJzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwg
InJlcXVlc3RVUkwiLCByZXF1ZXN0VVJMKCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNj
cmlwdFN0YXRlLCAiaG9zdCIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwotICAgICAgICBzY3JpcHRP
YmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhDb21wb25lbnQiLCBt
X3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5z
ZXQoc2NyaXB0U3RhdGUsICJpc01haW5SZXNvdXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiY2FjaGVkIiwgbV9jYWNoZWQpOwor
ICAgICAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2Ny
aXB0U3RhdGUpOworICAgICAgICBKU09OT2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gSlNPTk9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0
KCZyZXF1ZXN0SGVhZGVycywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKKyAgICAgICAganNvbk9i
amVjdC5zZXQoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOworICAgICAgICBqc29u
T2JqZWN0LnNldCgicmVxdWVzdFVSTCIsIHJlcXVlc3RVUkwoKSk7CisgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7CisgICAgICAgIGpzb25PYmplY3Qu
c2V0KCJwYXRoIiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0
KCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsK
KyAgICAgICAganNvbk9iamVjdC5zZXQoImlzTWFpblJlc291cmNlIiwgbV9pc01haW5SZXNvdXJj
ZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJjYWNoZWQiLCBtX2NhY2hlZCk7CiAgICAgICAg
IAogICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgYWRkUmVzb3VyY2Uoc2NyaXB0U3RhdGUsIHdl
Ykluc3BlY3RvciwgImFkZFJlc291cmNlIik7CiAgICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFy
Z3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50
KHNjcmlwdE9iamVjdCk7CisgICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KGpzb25P
YmplY3Quc2NyaXB0T2JqZWN0KCkpOwogICAgICAgICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2Vw
dGlvbik7CiAgICAgICAgIGlmIChoYWRFeGNlcHRpb24pCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNTIsNjAgKzE1Myw2MCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRP
YmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogCiAgICAgYm9vbCBo
YWRFeGNlcHRpb24gPSBmYWxzZTsKIAotICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QgPSBT
Y3JpcHRPYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBqc29u
T2JqZWN0ID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKICAgICBpZiAobV9j
aGFuZ2VzLmhhc0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgewotICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAidXJsIiwgcmVxdWVzdFVSTCgpKTsKLSAgICAgICAgc2NyaXB0T2Jq
ZWN0LnNldChzY3JpcHRTdGF0ZSwgImRvbWFpbiIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAicGF0aCIsIG1fcmVxdWVzdFVSTC5w
YXRoKCkpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibGFzdFBhdGhD
b21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIFNj
cmlwdE9iamVjdCByZXF1ZXN0SGVhZGVycyA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlw
dFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCAmcmVx
dWVzdEhlYWRlcnMsIG1fcmVxdWVzdEhlYWRlckZpZWxkcyk7Ci0gICAgICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJyZXF1ZXN0SGVhZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKLSAg
ICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgIm1haW5SZXNvdXJjZSIsIG1faXNN
YWluUmVzb3VyY2UpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlk
UmVxdWVzdENoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwgcmVx
dWVzdFVSTCgpKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRvbWFpbiIsIG1fcmVxdWVzdFVS
TC5ob3N0KCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgicGF0aCIsIG1fcmVxdWVzdFVSTC5w
YXRoKCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgibGFzdFBhdGhDb21wb25lbnQiLCBtX3Jl
cXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAgICAgIEpTT05PYmplY3QgcmVxdWVz
dEhlYWRlcnMgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBw
b3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVs
ZHMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVh
ZGVycyk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJtYWluUmVzb3VyY2UiLCBtX2lzTWFpblJl
c291cmNlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlcXVlc3RDaGFuZ2UiLCB0cnVl
KTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXNwb25zZUNoYW5nZSkp
IHsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgIm1pbWVUeXBlIiwgbV9t
aW1lVHlwZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJzdWdnZXN0
ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGgpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhdHVz
Q29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2RlKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChz
Y3JpcHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0g
ICAgICAgIFNjcmlwdE9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBTY3JpcHRPYmplY3Q6OmNyZWF0
ZU5ldyhzY3JpcHRTdGF0ZSk7Ci0gICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdChzY3JpcHRT
dGF0ZSwgJnJlc3BvbnNlSGVhZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7Ci0gICAgICAg
IHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25z
ZUhlYWRlcnMpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkUmVz
cG9uc2VDaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoIm1pbWVUeXBlIiwg
bV9taW1lVHlwZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIs
IG1fc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZXhwZWN0ZWRD
b250ZW50TGVuZ3RoIiwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgpOworICAgICAgICBqc29uT2Jq
ZWN0LnNldCgic3RhdHVzQ29kZSIsIG1fcmVzcG9uc2VTdGF0dXNDb2RlKTsKKyAgICAgICAganNv
bk9iamVjdC5zZXQoInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Cisg
ICAgICAgIEpTT05PYmplY3QgcmVzcG9uc2VIZWFkZXJzID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3
KHNjcmlwdFN0YXRlKTsKKyAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhl
YWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOworICAgICAgICBqc29uT2JqZWN0LnNldCgi
cmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVjdC5z
ZXQoImRpZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaWYgKG1fY2hhbmdl
cy5oYXNDaGFuZ2UoVHlwZUNoYW5nZSkpIHsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgInR5cGUiLCBzdGF0aWNfY2FzdDxpbnQ+KHR5cGUoKSkpOwotICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkVHlwZUNoYW5nZSIsIHRydWUpOworICAgICAg
ICBqc29uT2JqZWN0LnNldCgidHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgpKSk7CisgICAg
ICAgIGpzb25PYmplY3Quc2V0KCJkaWRUeXBlQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQogICAgIAog
ICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKExlbmd0aENoYW5nZSkpIHsKLSAgICAgICAgc2Ny
aXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7Ci0g
ICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRMZW5ndGhDaGFuZ2UiLCB0
cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImNvbnRlbnRMZW5ndGgiLCBtX2xlbmd0aCk7
CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRMZW5ndGhDaGFuZ2UiLCB0cnVlKTsKICAgICB9
CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShDb21wbGV0aW9uQ2hhbmdlKSkgewotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZmFpbGVkIiwgbV9mYWlsZWQpOwot
ICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZmluaXNoZWQiLCBtX2Zpbmlz
aGVkKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRpZENvbXBsZXRp
b25DaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImZhaWxlZCIsIG1fZmFp
bGVkKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImZpbmlzaGVkIiwgbV9maW5pc2hlZCk7Cisg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRDb21wbGV0aW9uQ2hhbmdlIiwgdHJ1ZSk7CiAgICAg
fQogCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoVGltaW5nQ2hhbmdlKSkgewogICAgICAg
ICBpZiAobV9zdGFydFRpbWUgPiAwKQotICAgICAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgInN0YXJ0VGltZSIsIG1fc3RhcnRUaW1lKTsKKyAgICAgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJzdGFydFRpbWUiLCBtX3N0YXJ0VGltZSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNl
UmVjZWl2ZWRUaW1lID4gMCkKLSAgICAgICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3Rh
dGUsICJyZXNwb25zZVJlY2VpdmVkVGltZSIsIG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUpOworICAg
ICAgICAgICAganNvbk9iamVjdC5zZXQoInJlc3BvbnNlUmVjZWl2ZWRUaW1lIiwgbV9yZXNwb25z
ZVJlY2VpdmVkVGltZSk7CiAgICAgICAgIGlmIChtX2VuZFRpbWUgPiAwKQotICAgICAgICAgICAg
c2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImVuZFRpbWUiLCBtX2VuZFRpbWUpOwotICAg
ICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZGlkVGltaW5nQ2hhbmdlIiwgdHJ1
ZSk7CisgICAgICAgICAgICBqc29uT2JqZWN0LnNldCgiZW5kVGltZSIsIG1fZW5kVGltZSk7Cisg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJkaWRUaW1pbmdDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAg
ICAgCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIHVwZGF0ZVJlc291cmNlKHNjcmlwdFN0YXRlLCB3
ZWJJbnNwZWN0b3IsICJ1cGRhdGVSZXNvdXJjZSIpOwogICAgIHVwZGF0ZVJlc291cmNlLmFwcGVu
ZEFyZ3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgdXBkYXRlUmVzb3VyY2UuYXBwZW5kQXJndW1l
bnQoc2NyaXB0T2JqZWN0KTsKKyAgICB1cGRhdGVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudChqc29u
T2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKICAgICB1cGRhdGVSZXNvdXJjZS5jYWxsKGhhZEV4Y2Vw
dGlvbik7CiAgICAgaWYgKGhhZEV4Y2VwdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9K
U09OT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTNkZGVl
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSlNPTk9iamVjdC5jcHAKQEAg
LTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNPTk9iamVjdC5o
IgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pT
T05PYmplY3Q6OkpTT05PYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQorICAgIDogbV9z
Y3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkKK3sKKyAgICBtX3NjcmlwdE9iamVjdCA9IFNjcmlwdE9i
amVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBt
X3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29s
IEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTY3JpcHRPYmplY3QmIHZh
bHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFt
ZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBKU09OT2JqZWN0JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2V0KG5hbWUsIHZhbHVlLnNj
cmlwdE9iamVjdCgpKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0
KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQo
Y29uc3QgY2hhciogbmFtZSwgZG91YmxlIHZhbHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9i
amVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmpl
Y3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBsb25nIGxvbmcgdmFsdWUpCit7CisgICAgcmV0dXJu
IG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Cit9CisKK2Jv
b2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVlKTsKK30K
KworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUsIHZhbHVl
KTsKK30KKworU2NyaXB0T2JqZWN0IEpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0OworfQorCitKU09OT2JqZWN0IEpTT05PYmplY3Q6
OmNyZWF0ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCit7CisgICAgcmV0dXJuIEpTT05P
YmplY3Qoc2NyaXB0U3RhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmggYi9XZWJDb3JlL2luc3BlY3Rvci9K
U09OT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllNjRmMAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKworI2lmbmRlZiBKU09OT2JqZWN0X2gKKyNkZWZpbmUgSlNPTk9iamVjdF9oCisK
KyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgU3RyaW5nOworCisgICAgY2xhc3MgSlNPTk9i
amVjdCB7CisgICAgcHVibGljOgorICAgICAgICBib29sIHNldChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBKU09OT2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFNjcmlwdE9iamVjdCYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBTdHJpbmcmKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgZG91YmxlKTsK
KyAgICAgICAgYm9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgbG9uZyBsb25nKTsKKyAgICAgICAg
Ym9vbCBzZXQoY29uc3QgY2hhciogbmFtZSwgaW50KTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3Qg
Y2hhciogbmFtZSwgYm9vbCk7CisgICAgICAgIFNjcmlwdE9iamVjdCBzY3JpcHRPYmplY3QoKSBj
b25zdDsKKworICAgICAgICBzdGF0aWMgSlNPTk9iamVjdCBjcmVhdGVOZXcoU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlKTsKKyAgICBwcml2YXRlOgorICAgICAgICBKU09OT2JqZWN0KFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSk7CisgICAgICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwor
ICAgICAgICBTY3JpcHRPYmplY3QgbV9zY3JpcHRPYmplY3Q7CisgICAgfTsKK30KKworI2VuZGlm
IC8vIEpTT05PYmplY3RfaAo=
</data>
<flag name="review"
          id="15229"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30277</attachid>
            <date>2009-05-13 08:42:26 -0700</date>
            <delta_ts>2009-05-19 09:44:14 -0700</delta_ts>
            <desc>step_3_patch</desc>
            <filename>frontend.txt</filename>
            <type>text/plain</type>
            <size>59888</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDYwZmY3OC4uMWUzOGQxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw5OSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFNwbGl0IEluc3BlY3RvckNvbnRyb2xsZXIgaW50byBJ
bnNwZWN0b3JDb250cm9sbGVyIGFuZCBJbnNwZWN0b3JGcm9udGVuZC4gTGF0dGVyIGVuY2Fwc3Vs
YXRlcyBhbGwgZnJvbnRlbmQgaW50ZXJhY3Rpb24gYW5kIGlzIHRoZSBvbmx5IGVudGl0eSBhbGxv
d2VkIHRvIG1ha2UgU2NyaXB0RnVuY3Rpb25DYWxscy4gVGhlIGZ1cnRoZXIgcGxhbiBpcyB0byBz
ZXJpYWxpemUgdGhlc2Ugc2NyaXB0IGZ1bmN0aW9uIGNhbGxzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQxOQorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6
OmFkZFRvQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpmb2N1c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2luZG93VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRBdHRhY2hlZFdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RD
bGVhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdE9i
amVjdFJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dQ
YW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRP
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnBydW5lUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1p
dExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNj
cmlwdEltcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRVc2VET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmFkZFNjcmlwdFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6dG9nZ2xlUmVjb3JkQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmVuYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmRpc2FibGVQcm9maWxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNhYmxlRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZmFpbGVkVG9QYXJzZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRDb250aW51ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6Ymlu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjYWxs
U2ltcGxlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Oklu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjp+
SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
Om5ld0pTT05PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjp1cGRh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6cmVtb3Zl
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUZv
Y3VzZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpzZXRBdHRh
Y2hlZFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6aW5zcGVj
dGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6c2hvd1BhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjpwb3B1bGF0ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmRlYnVn
Z2VyV2FzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6ZGVi
dWdnZXJXYXNEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6
cHJvZmlsZXJXYXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Ojpwcm9maWxlcldhc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjpwYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmQ6OmZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmQ6OnNldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmQ6OnBhdXNlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZDo6cmVzdW1lZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZDo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
OmFkZERPTVN0b3JhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5o
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKworMjAwOS0wNS0x
MyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBJbnRyb2R1Y2UgSlNPTk9iamVjdCB0
aGF0IHdyYXBzIFNjcmlwdE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlh
bGl6YXRpb24KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjU0MTkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDZiYTViODAuLjRmYmMyNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA0NSw2ICsx
MDQ1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
XAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCisJV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggXAogCVdlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGExYTFkMmMuLjNmOTJiYjkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtODA1LDYgKzgwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBc
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBhMzY4NGVmLi45NTY3OGExIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE1NjIwLDYgKzE1NjIwLDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JGcm9udGVuZC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmQuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YzAzMDk3Li5kNzJk
NTkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTg1
LDYgKzk4NSw4IEBACiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLzsg
fTsKIAkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODUwRkI5RDI3MTAw
ODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwogCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVE
MDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuaCAqLzsgfTsK
KwkJN0FFRDNFMDUwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRUQzRTAzMEZCQjFF
QUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CisJCTdBRUQzRTA2MEZC
QjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIElu
c3BlY3RvckZyb250ZW5kLmggKi87IH07CiAJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBT
dHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIu
aCAqLzsgfTsKIAkJODUwMDREOTQwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAwNEQ4
ODBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCAqLzsgfTsKIAkJODUwMDRE
OTUwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREODkwQUNFRUFFRjAwQzQzOEY2
IC8qIERPTVNWR0RlZnNFbGVtZW50Lm1tICovOyB9OwpAQCAtNTk1MCw2ICs1OTUyLDggQEAKIAkJ
N0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpT
T05PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPTk9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQjZGODg2MEZCOUQyNzEw
MDgwNUQwMiAvKiBKU09OT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTT05PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FFRDNFMDMwRkJC
MUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5
RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3Ryb2tlU3R5bGVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0
QjJCMUY3MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVLZXlHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTg0QjJCMUY4MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9y
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9
IFdlYkNvcmVLZXlHZW5lcmF0b3IubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC05NzI3LDYgKzk3MzEsOCBAQAogCQkJCTQxRjA2MTcy
MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLywKIAkJ
CQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgKi8sCiAJCQkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuaCAqLywKKwkJCQk3QUVEM0UwMzBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9y
RnJvbnRlbmQuY3BwICovLAorCQkJCTdBRUQzRTA0MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0
b3JGcm9udGVuZC5oICovLAogCQkJCTQxRjA2MjAwMEY1RjBCNjYwMEEwN0VBQyAvKiBJbnNwZWN0
b3JSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNDFGMDYxRkYwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3Bl
Y3RvclJlc291cmNlLmggKi8sCiAJCQkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovLApAQCAtMTY4NzMsNiArMTY4NzksNyBAQAogCQkJCTFBNTY5
RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jvb3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4ODg5LDYgKzE4ODk2LDcgQEAKIAkJCQkxQTU2OUQyNDBE
N0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
MzA5RTFEMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxlX3VuaXRzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBQjZGODg3MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdBRUQzRTA1MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVu
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMu
YmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggMzFlNTk0OS4uOTY1ZmVlNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wKQEAgLTYyOSw2ICs2MjksNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhl
IGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAogICAgICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAogICAgICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKKyAgICAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAogICAg
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCiAgICAgICAgIGluc3BlY3Rvci9K
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVn
U2VydmVyLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IDBkNTI1MWIu
LjYyYTlhYjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTMxLDEyICsz
MSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgi
CiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3Qu
aCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsRnJh
bWUuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRP
YmplY3RRdWFyYW50aW5lLmgiCi0jaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzUsMjggKzczLDE2IEBAIENvbnNvbGVNZXNzYWdlOjpDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VMZXZlbCBsLCBTY3JpcHRDYWxsU3RhY2sq
CiAgICAgICAgIG1fd3JhcHBlZEFyZ3VtZW50c1tpXSA9IHF1YXJhbnRpbmVWYWx1ZShjYWxsU3Rh
Y2stPnN0YXRlKCksIGxhc3RDYWxsZXIuYXJndW1lbnRBdChpKSk7CiB9CiAKLXZvaWQgQ29uc29s
ZU1lc3NhZ2U6OmFkZFRvQ29uc29sZShTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNj
cmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKQordm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Db25z
b2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKLSAgICBKU09OT2JqZWN0IGpzb25P
YmogPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgIEpTT05PYmplY3Qg
anNvbk9iaiA9IGZyb250ZW5kLT5uZXdKU09OT2JqZWN0KCk7CiAgICAganNvbk9iai5zZXQoInNv
dXJjZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsKICAgICBqc29uT2JqLnNldCgibGV2
ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbGV2ZWwpKTsKICAgICBqc29uT2JqLnNldCgibGluZSIs
IHN0YXRpY19jYXN0PGludD4obV9saW5lKSk7CiAgICAganNvbk9iai5zZXQoInVybCIsIG1fdXJs
KTsKICAgICBqc29uT2JqLnNldCgiZ3JvdXBMZXZlbCIsIHN0YXRpY19jYXN0PGludD4obV9ncm91
cExldmVsKSk7CiAgICAganNvbk9iai5zZXQoInJlcGVhdENvdW50Iiwgc3RhdGljX2Nhc3Q8aW50
PihtX3JlcGVhdENvdW50KSk7Ci0KLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oc2Ny
aXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFkZE1lc3NhZ2VUb0NvbnNvbGUiKTsKLSAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChqc29uT2JqLnNjcmlwdE9iamVjdCgpKTsKLSAgICBpZiAoIW1f
ZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9m
cmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCht
X2ZyYW1lc1tpXSk7Ci0gICAgfSBlbHNlIGlmICghbV93cmFwcGVkQXJndW1lbnRzLmlzRW1wdHko
KSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV93cmFwcGVkQXJndW1lbnRz
LnNpemUoKTsgKytpKQotICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobV93cmFw
cGVkQXJndW1lbnRzW2ldKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChtX21lc3NhZ2UpOwotICAgIH0KLSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAgZnJv
bnRlbmQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoanNvbk9iaiwgbV9mcmFtZXMsIG1fd3JhcHBlZEFy
Z3VtZW50cywgIG1fbWVzc2FnZSk7CiB9CiAKIGJvb2wgQ29uc29sZU1lc3NhZ2U6OmlzRXF1YWwo
U2NyaXB0U3RhdGUqIHN0YXRlLCBDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggYjQxYTM4Ni4uMTVlNmU3ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
ICAgICBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiAgICAgY2xhc3MgU2NyaXB0U3RyaW5nOwogCkBA
IC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVk
IGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpOyAgICAgICAgCiAgICAgICAgIENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKiwg
dW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNlID0gZmFsc2UpOwogCi0gICAgICAgIHZvaWQgYWRk
VG9Db25zb2xlKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3Ip
OworICAgICAgICB2b2lkIGFkZFRvQ29uc29sZShJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQp
OwogICAgICAgICB2b2lkIGluY3JlbWVudENvdW50KCkgeyArK21fcmVwZWF0Q291bnQ7IH07CiAg
ICAgICAgIGJvb2wgaXNFcXVhbChTY3JpcHRTdGF0ZSosIENvbnNvbGVNZXNzYWdlKiBtc2cpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGI5
ZGViY2QuLjVkMTBhNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
IgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCkBAIC01OCwxMCArNTksNyBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5jbHVkZSAiU2NyaXB0T2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0cmluZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKQEAgLTk5LDEyICs5Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSA9ICJvcmcud2Via2l0
LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKIAotc3RhdGljIHZvaWQgY2FsbFNpbXBsZUZ1bmN0
aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2Jq
ZWN0LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCi17Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB0aGlzT2JqZWN0LCBmdW5jdGlvbk5hbWUpOwotICAgIGZ1
bmN0aW9uLmNhbGwoKTsKLX0KLQogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRTb3VyY2VU
b0ZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgc291cmNlLCBOb2Rl
KiBmcmFtZU5vZGUpCiB7CiAgICAgQVNTRVJUX0FSRyhmcmFtZU5vZGUsIGZyYW1lTm9kZSk7CkBA
IC0yMDAsNyArMTkyLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xs
ZXIoKQogICAgIEFTU0VSVCghbV9zY3JpcHRTdGF0ZSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3Rl
ZFBhZ2UpOwogICAgIEFTU0VSVCghbV9wYWdlIHx8IChtX3BhZ2UgJiYgIW1fcGFnZS0+cGFyZW50
SW5zcGVjdG9yQ29udHJvbGxlcigpKSk7Ci0gICAgQVNTRVJUKG1fd2ViSW5zcGVjdG9yLmhhc05v
VmFsdWUoKSk7CiAKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mcmFtZVJlc291cmNlcyk7CiAgICAg
ZGVsZXRlQWxsVmFsdWVzKG1fY29uc29sZU1lc3NhZ2VzKTsKQEAgLTMxNyw3ICszMDgsNyBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICAgICAgbm9k
ZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBtX25vZGVUb0ZvY3VzID0gbm9kZTsKIAotICAg
IGlmIChtX3dlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpIHsKKyAgICBpZiAoIW1fZnJvbnRlbmQp
IHsKICAgICAgICAgbV9zaG93QWZ0ZXJWaXNpYmxlID0gRWxlbWVudHNQYW5lbDsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTMzMSwxOSArMzIyLDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Zm9jdXNOb2RlKCkKICAgICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQVNTRVJUKGhhc1dlYkluc3BlY3RvcigpKTsKKyAgICBBU1NFUlQobV9mcm9udGVuZC5n
ZXQoKSk7CiAgICAgQVNTRVJUKG1fbm9kZVRvRm9jdXMpOwogCi0gICAgU2NyaXB0T2JqZWN0IHF1
YXJhbnRpbmVkTm9kZTsKLSAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1fbm9k
ZVRvRm9jdXMuZ2V0KCksIHF1YXJhbnRpbmVkTm9kZSkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rv
ciwgInVwZGF0ZUZvY3VzZWROb2RlIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocXVh
cmFudGluZWROb2RlKTsKLQorICAgIG1fZnJvbnRlbmQtPnVwZGF0ZUZvY3VzZWROb2RlKG1fbm9k
ZVRvRm9jdXMuZ2V0KCkpOwogICAgIG1fbm9kZVRvRm9jdXMgPSAwOwotCi0gICAgZnVuY3Rpb24u
Y2FsbCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodChOb2RlKiBu
b2RlKQpAQCAtMzc1LDcgKzM1OCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2lu
ZG93VmlzaWJsZShib29sIHZpc2libGUsIGJvb2wgYXR0YWNoZWQpCiAKICAgICBtX3dpbmRvd1Zp
c2libGUgPSB2aXNpYmxlOwogCi0gICAgaWYgKCFoYXNXZWJJbnNwZWN0b3IoKSkKKyAgICBpZiAo
IW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dpbmRvd1Zpc2libGUp
IHsKQEAgLTQyOSw3ICs0MTIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNv
bGVNZXNzYWdlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgQ29uc29sZU1lcwogICAgIH0KIAog
ICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRU
b0NvbnNvbGUobV9zY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KG1fd2ViSW5zcGVjdG9yKSk7Cisg
ICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0NvbnNvbGUobV9mcm9udGVuZC5nZXQoKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQpA
QCAtNDczLDEyICs0NTYsMTAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkZXRhY2hXaW5k
b3coKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEF0dGFjaGVkV2luZG93KGJvb2wg
YXR0YWNoZWQpCiB7Ci0gICAgaWYgKCFlbmFibGVkKCkgfHwgIWhhc1dlYkluc3BlY3RvcigpKQor
ICAgIGlmICghZW5hYmxlZCgpIHx8ICFtX2Zyb250ZW5kKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0
b3IsICJzZXRBdHRhY2hlZFdpbmRvdyIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGF0
dGFjaGVkKTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAgbV9mcm9udGVuZC0+c2V0QXR0YWNo
ZWRXaW5kb3coYXR0YWNoZWQpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEF0
dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKQEAgLTUyNCwxNiArNTA1LDEwIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFuZGxlTW91c2VQcmVzc09uTm9kZShOb2RlKiBu
b2RlKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9i
amVjdENsZWFyZWQoRnJhbWUqIGZyYW1lKQogewotICAgIGlmICghZW5hYmxlZCgpIHx8ICFoYXNX
ZWJJbnNwZWN0b3IoKSkKKyAgICBpZiAoIWVuYWJsZWQoKSB8fCAhbV9mcm9udGVuZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU2NyaXB0T2JqZWN0IGRvbVdpbmRvdzsKLSAgICBpZiAoIWdldFF1
YXJhbnRpbmVkU2NyaXB0T2JqZWN0KGZyYW1lLT5kb21XaW5kb3coKSwgZG9tV2luZG93KSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0
U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiaW5zcGVjdGVkV2luZG93Q2xlYXJlZCIpOwotICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGRvbVdpbmRvdyk7Ci0gICAgZnVuY3Rpb24uY2FsbCgpOwor
ICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoZnJhbWUp
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbmRvd1NjcmlwdE9iamVjdEF2YWls
YWJsZSgpCkBAIC01NTQsOCArNTI5LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2Ny
aXB0T2JqZWN0UmVhZHkoKQogICAgIGlmICghbV9zY3JpcHRTdGF0ZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChtX3NjcmlwdFN0YXRlLCAiV2Vi
SW5zcGVjdG9yIiwgbV93ZWJJbnNwZWN0b3IpKQorICAgIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0
b3JPYmo7CisgICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6OmdldChtX3NjcmlwdFN0YXRlLCAi
V2ViSW5zcGVjdG9yIiwgd2ViSW5zcGVjdG9yT2JqKSkKICAgICAgICAgcmV0dXJuOworICAgIG1f
ZnJvbnRlbmQuc2V0KG5ldyBJbnNwZWN0b3JGcm9udGVuZChtX3NjcmlwdFN0YXRlLCB3ZWJJbnNw
ZWN0b3JPYmopKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBvdXIgd2luZG93IGlzIHZpc2libGUgbm93
IHRoYXQgdGhlIHBhZ2UgbG9hZGVkCiAgICAgc2hvd1dpbmRvdygpOwpAQCAtNTg2LDcgKzU2Myw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvd1BhbmVsKFNwZWNpYWxQYW5lbHMgcGFu
ZWwpCiAKICAgICBzaG93KCk7CiAKLSAgICBpZiAobV93ZWJJbnNwZWN0b3IuaGFzTm9WYWx1ZSgp
KSB7CisgICAgaWYgKCFtX2Zyb250ZW5kKSB7CiAgICAgICAgIG1fc2hvd0FmdGVyVmlzaWJsZSA9
IHBhbmVsOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTk0LDMzICs1NzEsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dQYW5lbChTcGVjaWFsUGFuZWxzIHBhbmVsKQogICAg
IGlmIChwYW5lbCA9PSBDdXJyZW50UGFuZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0
IGNoYXIqIHNob3dGdW5jdGlvbk5hbWU7Ci0gICAgc3dpdGNoIChwYW5lbCkgewotICAgICAgICBj
YXNlIENvbnNvbGVQYW5lbDoKLSAgICAgICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAic2hvd0Nv
bnNvbGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGF0YWJhc2VzUGFuZWw6
Ci0gICAgICAgICAgICBzaG93RnVuY3Rpb25OYW1lID0gInNob3dEYXRhYmFzZXNQYW5lbCI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFbGVtZW50c1BhbmVsOgotICAgICAgICAg
ICAgc2hvd0Z1bmN0aW9uTmFtZSA9ICJzaG93RWxlbWVudHNQYW5lbCI7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBQcm9maWxlc1BhbmVsOgotICAgICAgICAgICAgc2hvd0Z1bmN0
aW9uTmFtZSA9ICJzaG93UHJvZmlsZXNQYW5lbCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBSZXNvdXJjZXNQYW5lbDoKLSAgICAgICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAi
c2hvd1Jlc291cmNlc1BhbmVsIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNj
cmlwdHNQYW5lbDoKLSAgICAgICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAic2hvd1NjcmlwdHNQ
YW5lbCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgc2hvd0Z1bmN0aW9uTmFtZSA9IDA7
Ci0gICAgfQotCi0gICAgaWYgKHNob3dGdW5jdGlvbk5hbWUpCi0gICAgICAgIGNhbGxTaW1wbGVG
dW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rvciwgc2hvd0Z1bmN0aW9uTmFtZSk7
CisgICAgbV9mcm9udGVuZC0+c2hvd1BhbmVsKHBhbmVsKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpjbG9zZSgpCkBAIC02MzQsNyArNTg1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpjbG9zZSgpCiAjZW5kaWYKICAgICBjbG9zZVdpbmRvdygpOwogCi0gICAgbV93ZWJJ
bnNwZWN0b3IgPSBTY3JpcHRPYmplY3QoKTsKKyAgICBtX2Zyb250ZW5kLnNldCgwKTsKICAgICBt
X3NjcmlwdFN0YXRlID0gMDsKIH0KIApAQCAtNjU3LDM0ICs2MDgsMzQgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKQogCiAgICAgUmVzb3VyY2VzTWFw
OjppdGVyYXRvciByZXNvdXJjZXNFbmQgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKFJl
c291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSByZXNv
dXJjZXNFbmQ7ICsraXQpCi0gICAgICAgIGl0LT5zZWNvbmQtPmNyZWF0ZVNjcmlwdE9iamVjdCht
X3NjcmlwdFN0YXRlLCBTY3JpcHRPYmplY3QobV93ZWJJbnNwZWN0b3IpKTsKKyAgICAgICAgaXQt
PnNlY29uZC0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogCiAgICAgdW5z
aWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKLSAgICAgICAgbV9jb25zb2xl
TWVzc2FnZXNbaV0tPmFkZFRvQ29uc29sZShtX3NjcmlwdFN0YXRlLCBTY3JpcHRPYmplY3QobV93
ZWJJbnNwZWN0b3IpKTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0tPmFkZFRvQ29uc29s
ZShtX2Zyb250ZW5kLmdldCgpKTsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICBEYXRhYmFz
ZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9kYXRhYmFzZVJlc291cmNl
cy5lbmQoKTsKICAgICBmb3IgKERhdGFiYXNlUmVzb3VyY2VzU2V0OjppdGVyYXRvciBpdCA9IG1f
ZGF0YWJhc2VSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZGF0YWJhc2VzRW5kOyArK2l0KQotICAg
ICAgICAoKml0KS0+YmluZChtX3NjcmlwdFN0YXRlLCBTY3JpcHRPYmplY3QobV93ZWJJbnNwZWN0
b3IpKTsKKyAgICAgICAgKCppdCktPmJpbmQobV9mcm9udGVuZC5nZXQoKSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgRE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0
b3IgZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291cmNlcy5lbmQoKTsKICAgICBmb3Ig
KERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9kb21TdG9yYWdlUmVzb3Vy
Y2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5i
aW5kKG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3RvcikpOworICAgICAg
ICAoKml0KS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKICNlbmRpZgogCi0gICAgY2FsbFNpbXBs
ZUZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAicG9wdWxhdGVJbnRlcmZh
Y2UiKTsKKyAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUludGVyZmFjZSgpOwogfQogCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0cygpCiB7Ci0gICAgaWYgKCFoYXNX
ZWJJbnNwZWN0b3IoKSkKKyAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJjZXMuZW5k
KCk7CiAgICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVn
aW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KQotICAgICAgICBpdC0+c2Vjb25kLT5yZWxl
YXNlU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3Rv
ciksIGZhbHNlKTsKKyAgICAgICAgaXQtPnNlY29uZC0+cmVsZWFzZVNjcmlwdE9iamVjdChtX2Zy
b250ZW5kLmdldCgpLCBmYWxzZSk7CiAKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgRGF0YWJh
c2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGRhdGFiYXNlc0VuZCA9IG1fZGF0YWJhc2VSZXNvdXJj
ZXMuZW5kKCk7CkBAIC02OTcsNyArNjQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpy
ZXNldFNjcmlwdE9iamVjdHMoKQogICAgICAgICAoKml0KS0+dW5iaW5kKCk7CiAjZW5kaWYKIAot
ICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInJl
c2V0Iik7CisgICAgbV9mcm9udGVuZC0+cmVzZXQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpwcnVuZVJlc291cmNlcyhSZXNvdXJjZXNNYXAqIHJlc291cmNlTWFwLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyVG9LZWVwKQpAQCAtNzE0LDcgKzY2NSw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6cHJ1bmVSZXNvdXJjZXMoUmVzb3VyY2VzTWFwKiByZXNvdXJjZU1hcCwgRG9j
dW1lbnRMb2FkCiAgICAgICAgIGlmICghbG9hZGVyVG9LZWVwIHx8ICFyZXNvdXJjZS0+aXNTYW1l
TG9hZGVyKGxvYWRlclRvS2VlcCkpIHsKICAgICAgICAgICAgIHJlbW92ZVJlc291cmNlKHJlc291
cmNlKTsKICAgICAgICAgICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgICAgICAgICAg
cmVzb3VyY2UtPnJlbGVhc2VTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0
KG1fd2ViSW5zcGVjdG9yKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlbGVh
c2VTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICB9
CiB9CkBAIC03NTEsNyArNzAyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21t
aXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICAgICAgLy8gV2UgZG9u
J3QgYWRkIHRoZSBtYWluIHJlc291cmNlIHVudGlsIGl0cyBsb2FkIGlzIGNvbW1pdHRlZC4gVGhp
cyBpcwogICAgICAgICAgICAgICAgIC8vIG5lZWRlZCB0byBrZWVwIHRoZSBsb2FkIGZvciBhIHVz
ZXItZW50ZXJlZCBVUkwgZnJvbSBzaG93aW5nIHVwIGluIHRoZQogICAgICAgICAgICAgICAgIC8v
IGxpc3Qgb2YgcmVzb3VyY2VzIGZvciB0aGUgcGFnZSB0aGV5IGFyZSBuYXZpZ2F0aW5nIGF3YXkg
ZnJvbS4KLSAgICAgICAgICAgICAgICBtX21haW5SZXNvdXJjZS0+Y3JlYXRlU2NyaXB0T2JqZWN0
KG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3RvcikpOworICAgICAgICAg
ICAgICAgIG1fbWFpblJlc291cmNlLT5jcmVhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQo
KSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFBhZ2VzIGxvYWRl
ZCBmcm9tIHRoZSBwYWdlIGNhY2hlIGFyZSBjb21taXR0ZWQgYmVmb3JlCiAgICAgICAgICAgICAg
ICAgLy8gbV9tYWluUmVzb3VyY2UgaXMgdGhlIHJpZ2h0IHJlc291cmNlIGZvciB0aGlzIGxvYWQs
IHNvIHdlCkBAIC04MzEsNyArNzgyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRM
b2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICBh
ZGRSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CiAKICAgICBpZiAod2luZG93VmlzaWJsZSgpKQot
ICAgICAgICByZXNvdXJjZS0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIFNjcmlw
dE9iamVjdChtX3dlYkluc3BlY3RvcikpOworICAgICAgICByZXNvdXJjZS0+Y3JlYXRlU2NyaXB0
T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAg
LTg1Myw3ICs4MDQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JJ
bml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCiAgICAgYWRkUmVzb3VyY2Uo
cmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKHdpbmRvd1Zpc2libGUoKSAmJiBsb2FkZXItPmlz
TG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkgJiYgcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpCi0g
ICAgICAgIHJlc291cmNlLT5jcmVhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSwgU2NyaXB0
T2JqZWN0KG1fd2ViSW5zcGVjdG9yKSk7CisgICAgICAgIHJlc291cmNlLT5jcmVhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UpCkBAIC04NzMsNyArODI0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp3aWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWYK
ICAgICB9CiAKICAgICBpZiAocmVzb3VyY2UgIT0gbV9tYWluUmVzb3VyY2UgJiYgd2luZG93Vmlz
aWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3Rh
dGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3RvcikpOworICAgICAgICByZXNvdXJjZS0+Y3Jl
YXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC04ODks
NyArODQwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW4KICAgICByZXNvdXJjZS0+bWFya1Jl
c3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAKICAgICBpZiAod2luZG93VmlzaWJsZSgpKQotICAgICAg
ICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVj
dG9yKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdl
dCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZWNlaXZlQ29udGVudExl
bmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGxlbmd0
aFJlY2VpdmVkKQpAQCAtOTA0LDcgKzg1NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nCiAg
ICAgcmVzb3VyY2UtPmFkZExlbmd0aChsZW5ndGhSZWNlaXZlZCk7CiAKICAgICBpZiAod2luZG93
VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fc2NyaXB0
U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9i
amVjdChtX2Zyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KQpAQCAtOTIzLDcgKzg3NCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmluaXNo
TG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgYWRkUmVz
b3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKHdpbmRvd1Zpc2libGUoKSkKLSAgICAg
ICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3Bl
Y3Rvcik7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5n
ZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIC8qZXJyb3IqLykKQEAgLTk0Myw3ICs4OTQsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aQogICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsKIAogICAgIGlmICh3aW5kb3dWaXNp
YmxlKCkpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0
ZSwgbV93ZWJJbnNwZWN0b3IpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQpAQCAtOTU4LDcgKzkwOSw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgcmVzb3VyY2UtPnNldFhNTEh0dHBSZXNwb25zZVRleHQo
c291cmNlU3RyaW5nKTsKIAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIHJlc291
cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IpOwor
ICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCkBAIC05NzUsNyArOTI2
LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXNvdXJjZS0+c2V0WE1MSHR0cFJl
c3BvbnNlVGV4dChTY3JpcHRTdHJpbmcoc291cmNlU3RyaW5nKSk7CiAgICAgCiAgICAgaWYgKHdp
bmRvd1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3Nj
cmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rvcik7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3Jp
cHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIApAQCAtOTkwLDcgKzk0MSw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkT3BlbkRhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFz
ZSwgY29uc3QgU3RyaW5nJiBkb21hCiAgICAgbV9kYXRhYmFzZVJlc291cmNlcy5hZGQocmVzb3Vy
Y2UpOwogCiAgICAgaWYgKHdpbmRvd1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPmJpbmQo
bV9zY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KG1fd2ViSW5zcGVjdG9yKSk7CisgICAgICAgIHJl
c291cmNlLT5iaW5kKG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTEwMTAsNyAr
OTYxLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRVc2VET01TdG9yYWdlKFN0b3Jh
Z2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2EKIAogICAgIG1fZG9tU3RvcmFnZVJlc291
cmNlcy5hZGQocmVzb3VyY2UpOwogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIHJl
c291cmNlLT5iaW5kKG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3Rvcikp
OworICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKIH0KICNlbmRpZgog
CkBAIC0xMDUzLDExICsxMDA0LDEzIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkUHJv
ZmlsZU1lc3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxQcm9maWxlPiBwcnBQcm9mCiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0UHJvZmlsZShQcm9maWxlKiBwcm9maWxlKQog
ewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYklu
c3BlY3RvciwgImFkZFByb2ZpbGUiKTsKKyAgICBpZiAoIW1fZnJvbnRlbmQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudCh0b0pTKG1fc2NyaXB0U3RhdGUsIHByb2ZpbGUpKTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7
CisgICAgbV9mcm9udGVuZC0+YWRkUHJvZmlsZSh0b0pTKG1fc2NyaXB0U3RhdGUsIHByb2ZpbGUp
KTsKIH0KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmdTb29uKCkKIHsKICAgICBtX3N0YXJ0UHJvZmlsaW5nLnN0YXJ0T25lU2hvdCgwKTsKQEAg
LTExMDcsMTIgKzEwNjAsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5p
dGlhdGVkUHJvZmlsaW5nKCkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp0b2dnbGVSZWNv
cmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZykKIHsKLSAgICBpZiAoIWhhc1dlYkluc3BlY3Rvcigp
KQorICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAic2V0UmVj
b3JkaW5nUHJvZmlsZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGlzUHJvZmlsaW5n
KTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAgbV9mcm9udGVuZC0+c2V0UmVjb3JkaW5nUHJv
ZmlsZShpc1Byb2ZpbGluZyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxl
UHJvZmlsZXIoYm9vbCBza2lwUmVjb21waWxlKQpAQCAtMTEyNSw4ICsxMDc1LDggQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVQcm9maWxlcihib29sIHNraXBSZWNvbXBpbGUpCiAg
ICAgaWYgKCFza2lwUmVjb21waWxlKQogICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNo
YXJlZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOwogCi0gICAgaWYgKGhhc1dlYklu
c3BlY3RvcigpKQotICAgICAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93
ZWJJbnNwZWN0b3IsICJwcm9maWxlcldhc0VuYWJsZWQiKTsKKyAgICBpZiAobV9mcm9udGVuZC5n
ZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZC0+cHJvZmlsZXJXYXNFbmFibGVkKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVByb2ZpbGVyKCkKQEAgLTExMzgsOCArMTA4
OCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVByb2ZpbGVyKCkKIAogICAg
IEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnNT
b29uKCk7CiAKLSAgICBpZiAoaGFzV2ViSW5zcGVjdG9yKCkpCi0gICAgICAgIGNhbGxTaW1wbGVG
dW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInByb2ZpbGVyV2FzRGlzYWJs
ZWQiKTsKKyAgICBpZiAobV9mcm9udGVuZC5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZC0+cHJv
ZmlsZXJXYXNEaXNhYmxlZCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJs
ZURlYnVnZ2VyKCkKQEAgLTExNDcsNyArMTA5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZW5hYmxlRGVidWdnZXIoKQogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIW1fc2NyaXB0U3RhdGUgfHwgbV93ZWJJbnNwZWN0b3IuaGFzTm9WYWx1ZSgp
KSB7CisgICAgaWYgKCFtX3NjcmlwdFN0YXRlIHx8ICFtX2Zyb250ZW5kKSB7CiAgICAgICAgIG1f
YXR0YWNoRGVidWdnZXJXaGVuU2hvd24gPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTE2MCw3ICsxMTEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVEZWJ1
Z2dlcigpCiAgICAgbV9kZWJ1Z2dlckVuYWJsZWQgPSB0cnVlOwogICAgIG1fYXR0YWNoRGVidWdn
ZXJXaGVuU2hvd24gPSBmYWxzZTsKIAotICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0
YXRlLCBtX3dlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRW5hYmxlZCIpOworICAgIG1fZnJvbnRl
bmQtPmRlYnVnZ2VyV2FzRW5hYmxlZCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2FibGVEZWJ1Z2dlcigpCkBAIC0xMTc1LDggKzExMjUsOCBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcigpCiAgICAgbV9kZWJ1Z2dlckVuYWJsZWQgPSBmYWxz
ZTsKICAgICBtX2F0dGFjaERlYnVnZ2VyV2hlblNob3duID0gZmFsc2U7CiAKLSAgICBpZiAoaGFz
V2ViSW5zcGVjdG9yKCkpCi0gICAgICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRl
LCBtX3dlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlzYWJsZWQiKTsKKyAgICBpZiAobV9mcm9u
dGVuZC5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZC0+ZGVidWdnZXJXYXNEaXNhYmxlZCgpOwog
fQogCiBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBJbnNwZWN0b3JDb250cm9sbGVyOjpjdXJyZW50Q2Fs
bEZyYW1lKCkgY29uc3QKQEAgLTEyNDMsMzMgKzExOTMsMjIgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpyZW1vdmVCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5l
TnVtYmUKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRQYXJzZVNvdXJjZShFeGVjU3Rh
dGUqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiB7Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAicGFyc2VkU2NyaXB0U291
cmNlIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc3RhdGljX2Nhc3Q8bG9uZyBsb25n
Pihzb3VyY2UucHJvdmlkZXIoKS0+YXNJRCgpKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoc291cmNlLnByb3ZpZGVyKCktPnVybCgpKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChKU0M6OlVTdHJpbmcoc291cmNlLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKSk7Ci0gICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlLmZpcnN0TGluZSgpKTsKLSAgICBmdW5jdGlvbi5j
YWxsKCk7CisgICAgbV9mcm9udGVuZC0+cGFyc2VkU2NyaXB0U291cmNlKHNvdXJjZSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZmFpbGVkVG9QYXJzZVNvdXJjZShFeGVjU3RhdGUq
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBlcnJvckxpbmUsIGNvbnN0IFVTdHJpbmcm
IGVycm9yTWVzc2FnZSkKIHsKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3Jp
cHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJmYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlIik7Ci0g
ICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlLnByb3ZpZGVyKCktPnVybCgpKTsKLSAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OlVTdHJpbmcoc291cmNlLmRhdGEoKSwgc291
cmNlLmxlbmd0aCgpKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlLmZpcnN0
TGluZSgpKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChlcnJvckxpbmUpOwotICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGVycm9yTWVzc2FnZSk7Ci0gICAgZnVuY3Rpb24uY2FsbCgp
OworICAgIG1fZnJvbnRlbmQtPmZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2Uoc291cmNlLCBlcnJv
ckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
UGF1c2UoKQogewotICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYklu
c3BlY3RvciwgInBhdXNlZFNjcmlwdCIpOworICAgIG1fZnJvbnRlbmQtPnBhdXNlZFNjcmlwdCgp
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbnRpbnVlKCkKIHsKLSAgICBj
YWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJyZXN1bWVk
U2NyaXB0Iik7CisgICAgbV9mcm9udGVuZC0+cmVzdW1lZFNjcmlwdCgpOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAxODA0ZjYwLi5kODZm
NDRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMSw3ICsz
MSw2IEBACiAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgog
I2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtNTgsNiArNTcs
NyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CitjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZDsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBTdG9yYWdlQXJlYTsK
IGNsYXNzIE5vZGU7CkBAIC02Niw2ICs2Niw3IEBAIHN0cnVjdCBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNjcmlw
dENhbGxTdGFjazsKK2NsYXNzIFNjcmlwdE9iamVjdDsKIGNsYXNzIFNjcmlwdFN0cmluZzsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIApAQCAtMjY5LDcgKzI3MCw2IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKLSAg
ICBib29sIGhhc1dlYkluc3BlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0U3RhdGUgJiYg
IW1fd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKTsgfQogICAgIHZvaWQgZm9jdXNOb2RlKCk7CiAK
ICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKFNjcmlwdFN0YXRlKiwgQ29uc29sZU1lc3NhZ2Uq
KTsKQEAgLTI4NSw2ICsyODUsNyBAQCBwcml2YXRlOgogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQ
YWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPEluc3BlY3Rv
ckZyb250ZW5kPiBtX2Zyb250ZW5kOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8Tm9k
ZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVjdG9yUmVzb3VyY2U+IG1fbWFpblJl
c291cmNlOwpAQCAtMzAwLDcgKzMwMSw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQogICAgIERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQgbV9kb21TdG9yYWdlUmVzb3VyY2VzOwog
I2VuZGlmCi0gICAgU2NyaXB0T2JqZWN0IG1fd2ViSW5zcGVjdG9yOwogICAgIFNjcmlwdFN0YXRl
KiBtX3NjcmlwdFN0YXRlOwogICAgIGJvb2wgbV93aW5kb3dWaXNpYmxlOwogICAgIFNwZWNpYWxQ
YW5lbHMgbV9zaG93QWZ0ZXJWaXNpYmxlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKaW5kZXggYWZiYmE1YS4uMWYzNTIyZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCkBA
IC0zNSwxMCArMzUsOSBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSlNPTk9iamVj
dC5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUgIlNjcmlwdE9i
amVjdFF1YXJhbnRpbmUuaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlN0
b3JhZ2UuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTU4LDI4ICs1NywyMCBAQCBib29s
IEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6aXNTYW1lSG9zdEFuZFR5cGUoRnJhbWUqIGZy
YW1lLCBib29sIGlzTG9jYWxTdAogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShtX2ZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCksIGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCkpICYmIG1faXNMb2NhbFN0b3JhZ2UgPT0gaXNMb2Nh
bFN0b3JhZ2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3Ip
Cit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JGcm9udGVu
ZCogZnJvbnRlbmQpCiB7CiAgICAgaWYgKG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcmlwdFN0YXRlKTsKLSAgICBBU1NFUlQoIXdlYkluc3Bl
Y3Rvci5oYXNOb1ZhbHVlKCkpOwotICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVjdG9y
Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEpTT05PYmplY3QganNv
bk9iamVjdCA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9i
amVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsKICAgICBTY3JpcHRP
YmplY3QgZG9tU3RvcmFnZTsKICAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1f
ZnJhbWUuZ2V0KCksIG1fZG9tU3RvcmFnZS5nZXQoKSwgZG9tU3RvcmFnZSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBqc29uT2JqZWN0LnNldCgiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2UpOwogICAg
IGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+aG9zdCgpKTsKICAgICBqc29uT2JqZWN0LnNldCgiaXNMb2NhbFN0b3JhZ2UiLCBtX2lz
TG9jYWxTdG9yYWdlKTsKLQotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGRET01TdG9yYWdlKHNj
cmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRET01TdG9yYWdlIik7Ci0gICAgYWRkRE9NU3Rv
cmFnZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKLSAgICBhZGRE
T01TdG9yYWdlLmNhbGwoKTsKLSAgICBtX3NjcmlwdE9iamVjdENyZWF0ZWQgPSB0cnVlOworICAg
IGlmIChmcm9udGVuZC0+YWRkRE9NU3RvcmFnZShqc29uT2JqZWN0KSkKKyAgICAgICAgbV9zY3Jp
cHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2U6OnVuYmluZCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5oCmluZGV4IDQ3ZDNmZTAuLjNlMDU4OTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oCkBAIC00NCw2ICs0NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0b3JhZ2U7CiAgICAgY2xhc3MgRnJhbWU7
CisgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2U+IHsKICAgICBwdWJsaWM6CkBAIC01Miw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlKGRvbVN0b3JhZ2UsIGlzTG9jYWxTdG9yYWdlLCBmcmFtZSkpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBiaW5kKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJ
bnNwZWN0b3IpOworICAgICAgICB2b2lkIGJpbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KTsKICAgICAgICAgdm9pZCB1bmJpbmQoKTsKIAogICAgICAgICBib29sIGlzU2FtZUhvc3RBbmRU
eXBlKEZyYW1lKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCmluZGV4IDI2MjgwODkuLmI2MTM0
NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3Vy
Y2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2Uu
Y3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlv
bkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCi0jaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDE3ICs1MSwx
MiBAQCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
KERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgUwogewogfQogCi12b2lkIEluc3BlY3RvckRhdGFi
YXNlUmVzb3VyY2U6OmJpbmQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRP
YmplY3QmIHdlYkluc3BlY3RvcikKK3ZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6Ymlu
ZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgaWYgKG1fc2NyaXB0T2JqZWN0
Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcmlwdFN0YXRlKTsKLSAg
ICBBU1NFUlQoIXdlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpOwotICAgIGlmICghc2NyaXB0U3Rh
dGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
SlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRl
KTsKKyAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgp
OwogICAgIFNjcmlwdE9iamVjdCBkYXRhYmFzZTsKICAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2Ny
aXB0T2JqZWN0KG1fZGF0YWJhc2UuZ2V0KCksIGRhdGFiYXNlKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNjksMTEgKzY0LDggQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWMKICAgICBqc29uT2JqZWN0
LnNldCgiZG9tYWluIiwgbV9kb21haW4pOwogICAgIGpzb25PYmplY3Quc2V0KCJuYW1lIiwgbV9u
YW1lKTsKICAgICBqc29uT2JqZWN0LnNldCgidmVyc2lvbiIsIG1fdmVyc2lvbik7Ci0gICAgCi0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGFkZERhdGFiYXNlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0
b3IsICJhZGREYXRhYmFzZSIpOwotICAgIGFkZERhdGFiYXNlLmFwcGVuZEFyZ3VtZW50KGpzb25P
YmplY3Quc2NyaXB0T2JqZWN0KCkpOwotICAgIGFkZERhdGFiYXNlLmNhbGwoKTsKLSAgICBtX3Nj
cmlwdE9iamVjdENyZWF0ZWQgPSB0cnVlOworICAgIGlmIChmcm9udGVuZC0+YWRkRGF0YWJhc2Uo
anNvbk9iamVjdCkpCisgICAgICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6dW5iaW5kKCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaAppbmRleCAxYTBhNjU3Li4zOGY5ZmEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNl
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCkBA
IC00Miw3ICs0Miw4IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKKyAgICAKICAgICBjbGFzcyBJ
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gY3JlYXRlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29u
c3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uKQpAQCAtNTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UoZGF0YWJhc2UsIGRv
bWFpbiwgbmFtZSwgdmVyc2lvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBiaW5kKFNj
cmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOworICAgICAgICB2
b2lkIGJpbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKICAgICAgICAgdm9pZCB1bmJp
bmQoKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzYTViNQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApAQCAtMCww
ICsxLDI3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKKworI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiICAvLyBUT0RPKHBmZWxkbWFuKTogRXh0
cmFjdCBTcGVjaWFsUGFuZWxzIHRvIHJlbW92ZSBpbmNsdWRlLgorI2luY2x1ZGUgIkpTT05PYmpl
Y3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgi
CisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFu
dGluZS5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RyaW5n
LmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNpbmNsdWRlIDxwYXJzZXIv
U291cmNlQ29kZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvVVN0cmluZy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IHZvaWQgY2FsbFNpbXBsZUZ1bmN0aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCit7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB0aGlzT2JqZWN0LCBm
dW5jdGlvbk5hbWUpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKworSW5zcGVjdG9yRnJvbnRl
bmQ6Okluc3BlY3RvckZyb250ZW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgU2NyaXB0T2Jq
ZWN0IHdlYkluc3BlY3RvcikKKyAgICA6IG1fc2NyaXB0U3RhdGUoc2NyaXB0U3RhdGUpCisgICAg
LCBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpCit7Cit9CisKK0luc3BlY3RvckZyb250ZW5k
Ojp+SW5zcGVjdG9yRnJvbnRlbmQoKSAKK3sKKyAgICBtX3dlYkluc3BlY3RvciA9IFNjcmlwdE9i
amVjdCgpOworfQorCitKU09OT2JqZWN0IEluc3BlY3RvckZyb250ZW5kOjpuZXdKU09OT2JqZWN0
KCkgeworICAgIHJldHVybiBKU09OT2JqZWN0OjpjcmVhdGVOZXcobV9zY3JpcHRTdGF0ZSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoY29uc3QgSlNP
Tk9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywg
Y29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3Rh
dGUsIG1fd2ViSW5zcGVjdG9yLCAiYWRkTWVzc2FnZVRvQ29uc29sZSIpOworICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2VPYmouc2NyaXB0T2JqZWN0KCkpOworICAgIGlmICghZnJh
bWVzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhbWVz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnJhbWVz
W2ldKTsKKyAgICB9IGVsc2UgaWYgKCF3cmFwcGVkQXJndW1lbnRzLmlzRW1wdHkoKSkgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd3JhcHBlZEFyZ3VtZW50cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHdyYXBwZWRBcmd1bWVudHNb
aV0pOworICAgIH0gZWxzZQorICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtZXNzYWdl
KTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFk
ZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBKU09OT2JqZWN0JiByZXNvdXJj
ZU9iaikKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwg
bV93ZWJJbnNwZWN0b3IsICJhZGRSZXNvdXJjZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGlkZW50aWZpZXIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHJlc291cmNlT2Jq
LnNjcmlwdE9iamVjdCgpKTsKKyAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIGZ1
bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKKyAgICByZXR1cm4gIWhhZEV4Y2VwdGlvbjsKK30K
KworYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlUmVzb3VyY2UobG9uZyBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IEpTT05PYmplY3QmIHJlc291cmNlT2JqKQoreworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInVwZGF0ZVJl
c291cmNlIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaWRlbnRpZmllcik7CisgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocmVzb3VyY2VPYmouc2NyaXB0T2JqZWN0KCkpOworICAg
IGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRp
b24pOworICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOworfQorCit2b2lkIEluc3BlY3RvckZyb250
ZW5kOjpyZW1vdmVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJyZW1v
dmVSZXNvdXJjZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGlkZW50aWZpZXIpOwor
ICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRl
Rm9jdXNlZE5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBTY3JpcHRPYmplY3QgcXVhcmFudGluZWRO
b2RlOworICAgIGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3Qobm9kZSwgcXVhcmFudGlu
ZWROb2RlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAidXBkYXRlRm9jdXNlZE5vZGUiKTsK
KyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChxdWFyYW50aW5lZE5vZGUpOworICAgIGZ1bmN0
aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6c2V0QXR0YWNoZWRXaW5k
b3coYm9vbCBhdHRhY2hlZCkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9z
Y3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJzZXRBdHRhY2hlZFdpbmRvdyIpOworICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGF0dGFjaGVkKTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENs
ZWFyZWQoRnJhbWUqIGZyYW1lKQoreworICAgIFNjcmlwdE9iamVjdCBkb21XaW5kb3c7CisgICAg
aWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChmcmFtZS0+ZG9tV2luZG93KCksIGRvbVdp
bmRvdykpCisgICAgICAgIHJldHVybjsKKworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImluc3BlY3RlZFdpbmRvd0NsZWFyZWQi
KTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChkb21XaW5kb3cpOworICAgIGZ1bmN0aW9u
LmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6c2hvd1BhbmVsKGludCBwYW5l
bCkKK3sKKyAgICBjb25zdCBjaGFyKiBzaG93RnVuY3Rpb25OYW1lOworICAgIHN3aXRjaCAocGFu
ZWwpIHsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpDb25zb2xlUGFuZWw6Cisg
ICAgICAgICAgICBzaG93RnVuY3Rpb25OYW1lID0gInNob3dDb25zb2xlIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRyb2xsZXI6OkRhdGFiYXNlc1BhbmVs
OgorICAgICAgICAgICAgc2hvd0Z1bmN0aW9uTmFtZSA9ICJzaG93RGF0YWJhc2VzUGFuZWwiOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6RWxl
bWVudHNQYW5lbDoKKyAgICAgICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAic2hvd0VsZW1lbnRz
UGFuZWwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJv
bGxlcjo6UHJvZmlsZXNQYW5lbDoKKyAgICAgICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAic2hv
d1Byb2ZpbGVzUGFuZWwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5zcGVj
dG9yQ29udHJvbGxlcjo6UmVzb3VyY2VzUGFuZWw6CisgICAgICAgICAgICBzaG93RnVuY3Rpb25O
YW1lID0gInNob3dSZXNvdXJjZXNQYW5lbCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTY3JpcHRzUGFuZWw6CisgICAgICAgICAgICBzaG93
RnVuY3Rpb25OYW1lID0gInNob3dTY3JpcHRzUGFuZWwiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAwOworICAgIH0KKworICAgIGlmIChzaG93RnVuY3Rp
b25OYW1lKQorICAgICAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJ
bnNwZWN0b3IsIHNob3dGdW5jdGlvbk5hbWUpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5k
Ojpwb3B1bGF0ZUludGVyZmFjZSgpCit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKG1fc2NyaXB0
U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAicG9wdWxhdGVJbnRlcmZhY2UiKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JGcm9udGVuZDo6cmVzZXQoKQoreworICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3Nj
cmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInJlc2V0Iik7Cit9CisKKworI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGVidWdnZXJXYXNF
bmFibGVkKCkKK3sKKyAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJ
bnNwZWN0b3IsICJkZWJ1Z2dlcldhc0VuYWJsZWQiKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6ZGVidWdnZXJXYXNEaXNhYmxlZCgpCit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKG1f
c2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZGVidWdnZXJXYXNEaXNhYmxlZCIpOworfQor
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwcm9maWxlcldhc0VuYWJsZWQoKQoreworICAgIGNh
bGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInByb2ZpbGVy
V2FzRW5hYmxlZCIpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwcm9maWxlcldhc0Rp
c2FibGVkKCkKK3sKKyAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJ
bnNwZWN0b3IsICJwcm9maWxlcldhc0Rpc2FibGVkIik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJv
bnRlbmQ6OnBhcnNlZFNjcmlwdFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSkK
K3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJ
bnNwZWN0b3IsICJwYXJzZWRTY3JpcHRTb3VyY2UiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNvdXJjZS5wcm92aWRlcigpLT5hc0lEKCkpKTsK
KyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UucHJvdmlkZXIoKS0+dXJsKCkpOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6VVN0cmluZyhzb3VyY2UuZGF0YSgpLCBz
b3VyY2UubGVuZ3RoKCkpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UuZmly
c3RMaW5lKCkpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6ZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUmIHNv
dXJjZSwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7
CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5z
cGVjdG9yLCAiZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSIpOworICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSk7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoSlNDOjpVU3RyaW5nKHNvdXJjZS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSkpOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5maXJzdExpbmUoKSk7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoZXJyb3JMaW5lKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChlcnJvck1lc3NhZ2UpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JGcm9udGVuZDo6YWRkUHJvZmlsZShjb25zdCBKU0M6OkpTVmFsdWUmIHByb2ZpbGUpCit7
CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5z
cGVjdG9yLCAiYWRkUHJvZmlsZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHByb2Zp
bGUpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6
c2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKQoreworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInNldFJlY29y
ZGluZ1Byb2ZpbGUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpc1Byb2ZpbGluZyk7
CisgICAgZnVuY3Rpb24uY2FsbCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwYXVz
ZWRTY3JpcHQoKQoreworICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dl
Ykluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5k
OjpyZXN1bWVkU2NyaXB0KCkKK3sKKyAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0
ZSwgbV93ZWJJbnNwZWN0b3IsICJyZXN1bWVkU2NyaXB0Iik7Cit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShEQVRBQkFTRSkKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZERhdGFiYXNlKGNvbnN0
IEpTT05PYmplY3QmIGRiT2JqZWN0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImFkZERhdGFiYXNlIik7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoZGJPYmplY3Quc2NyaXB0T2JqZWN0KCkpOworICAgIGJvb2wg
aGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOwor
ICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCitib29sIEluc3BlY3RvckZyb250ZW5kOjphZGRET01TdG9yYWdlKGNvbnN0IEpTT05P
YmplY3QmIGRvbVN0b3JhZ2VPYmopCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiYWRkRE9NU3RvcmFnZSIpOworICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGRvbVN0b3JhZ2VPYmouc2NyaXB0T2JqZWN0KCkpOworICAg
IGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgZnVuY3Rpb24uY2FsbChoYWRFeGNlcHRp
b24pOworICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2N2VjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBJbnNwZWN0b3JGcm9udGVuZF9oCisjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kX2gKKwor
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgorCisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBK
U1ZhbHVlOworICAgIGNsYXNzIFNvdXJjZUNvZGU7CisgICAgY2xhc3MgVVN0cmluZzsKK30KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7Cisg
ICAgY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CisgICAgY2xhc3MgTm9kZTsKKyAgICBjbGFzcyBT
Y3JpcHRTdHJpbmc7CisKKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZCB7CisgICAgcHVibGlj
OgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRTdGF0ZSosIFNjcmlwdE9iamVjdCB3
ZWJJbnNwZWN0b3IpOworICAgICAgICB+SW5zcGVjdG9yRnJvbnRlbmQoKTsKKyAgICAgICAgSlNP
Tk9iamVjdCBuZXdKU09OT2JqZWN0KCk7CisKKyAgICAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25z
b2xlKGNvbnN0IEpTT05PYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJp
bmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1ZT4gd3JhcHBlZEFyZ3VtZW50cywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgYWRkUmVzb3Vy
Y2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEpTT05PYmplY3QmIHJlc291cmNlT2JqKTsK
KyAgICAgICAgYm9vbCB1cGRhdGVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
SlNPTk9iamVjdCYgcmVzb3VyY2VPYmopOworICAgICAgICB2b2lkIHJlbW92ZVJlc291cmNlKGxv
bmcgbG9uZyBpZGVudGlmaWVyKTsKKworICAgICAgICB2b2lkIHVwZGF0ZUZvY3VzZWROb2RlKE5v
ZGUqIG5vZGUpOworICAgICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93KGJvb2wgYXR0YWNoZWQp
OworICAgICAgICB2b2lkIGluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUq
IGZyYW1lKTsKKyAgICAgICAgdm9pZCBzaG93UGFuZWwoaW50IHBhbmVsKTsKKyAgICAgICAgdm9p
ZCBwb3B1bGF0ZUludGVyZmFjZSgpOworICAgICAgICB2b2lkIHJlc2V0KCk7CisKKyNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICAgICAgdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQo
KTsKKyAgICAgICAgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CisgICAgICAgIHZvaWQgcHJv
ZmlsZXJXYXNFbmFibGVkKCk7CisgICAgICAgIHZvaWQgcHJvZmlsZXJXYXNEaXNhYmxlZCgpOwor
ICAgICAgICB2b2lkIHBhcnNlZFNjcmlwdFNvdXJjZShjb25zdCBKU0M6OlNvdXJjZUNvZGUmKTsK
KyAgICAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlKGNvbnN0IEpTQzo6U291cmNl
Q29kZSYsIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgdm9pZCBhZGRQcm9maWxlKGNvbnN0IEpTQzo6SlNWYWx1ZSYgcHJvZmlsZSk7Cisg
ICAgICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5nKTsKKyAgICAg
ICAgdm9pZCBwYXVzZWRTY3JpcHQoKTsKKyAgICAgICAgdm9pZCByZXN1bWVkU2NyaXB0KCk7Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAgICAgYm9vbCBhZGREYXRhYmFzZShj
b25zdCBKU09OT2JqZWN0JiBkYk9iaik7CisjZW5kaWYKKyAgICAgICAgCisjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQorICAgICAgICBib29sIGFkZERPTVN0b3JhZ2UoY29uc3QgSlNPTk9iamVjdCYg
ZG9tU3RvcmFnZU9iaik7CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIFNjcmlwdFN0
YXRlKiBtX3NjcmlwdFN0YXRlOworICAgICAgICBTY3JpcHRPYmplY3QgbV93ZWJJbnNwZWN0b3I7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIWRlZmluZWQo
SW5zcGVjdG9yRnJvbnRlbmRfaCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cAppbmRleCA0MzgwNTgzLi42MTg0MTE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2UuY3BwCkBAIC0zNSwxMSArMzUsMTAgQEAKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1
ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTQsMTMg
KzExMywxMSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoSlNPTk9iamVjdCog
b2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZQogICAgIH0KIH0KIAotdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCit2b2lkIEluc3BlY3RvclJlc291
cmNlOjpjcmVhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewog
ICAgIGlmICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKSB7Ci0gICAgICAgIGJvb2wgaGFkRXhjZXB0
aW9uID0gZmFsc2U7Ci0KLSAgICAgICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgSlNPTk9iamVjdCByZXF1ZXN0SGVh
ZGVycyA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIEpTT05P
YmplY3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5uZXdKU09OT2JqZWN0KCk7CisgICAgICAgIEpT
T05PYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBmcm9udGVuZC0+bmV3SlNPTk9iamVjdCgpOwogICAg
ICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFk
ZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEhlYWRlcnMiLCByZXF1
ZXN0SGVhZGVycyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0VVJMIiwgcmVxdWVz
dFVSTCgpKTsKQEAgLTEyOSwyMSArMTI2LDE2IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OmNy
ZWF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwCiAg
ICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5s
YXN0UGF0aENvbXBvbmVudCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImlzTWFpblJlc291
cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJjYWNoZWQi
LCBtX2NhY2hlZCk7Ci0gICAgICAgIAotICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgYWRkUmVz
b3VyY2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFkZFJlc291cmNlIik7Ci0gICAgICAg
IGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFJl
c291cmNlLmFwcGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2NyaXB0T2JqZWN0KCkpOwotICAgICAg
ICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChoYWRFeGNlcHRp
b24pCisgICAgICAgIGlmICghZnJvbnRlbmQtPmFkZFJlc291cmNlKG1faWRlbnRpZmllciwganNv
bk9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRPYmplY3RD
cmVhdGVkID0gdHJ1ZTsKICAgICAgICAgbV9jaGFuZ2VzLmNsZWFyKFJlcXVlc3RDaGFuZ2UpOwog
ICAgIH0KLSAgICB1cGRhdGVTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3Rvcik7
CisgICAgdXBkYXRlU2NyaXB0T2JqZWN0KGZyb250ZW5kKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCit2b2lkIEluc3BlY3RvclJlc291cmNlOjp1
cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogewogICAgIGlm
ICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKQogICAgICAgICByZXR1cm47CkBAIC0xNTEsMTUgKzE0
MywxMyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoU2NyaXB0
U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hh
bmdlKE5vQ2hhbmdlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBoYWRFeGNlcHRpb24g
PSBmYWxzZTsKLQotICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IEpTT05PYmplY3Q6OmNyZWF0
ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQt
Pm5ld0pTT05PYmplY3QoKTsKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShSZXF1ZXN0Q2hh
bmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LnNldCgidXJsIiwgcmVxdWVzdFVSTCgpKTsKICAg
ICAgICAganNvbk9iamVjdC5zZXQoImRvbWFpbiIsIG1fcmVxdWVzdFVSTC5ob3N0KCkpOwogICAg
ICAgICBqc29uT2JqZWN0LnNldCgicGF0aCIsIG1fcmVxdWVzdFVSTC5wYXRoKCkpOwogICAgICAg
ICBqc29uT2JqZWN0LnNldCgibGFzdFBhdGhDb21wb25lbnQiLCBtX3JlcXVlc3RVUkwubGFzdFBh
dGhDb21wb25lbnQoKSk7Ci0gICAgICAgIEpTT05PYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBKU09O
T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBKU09OT2JqZWN0IHJlcXVl
c3RIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVI
ZWFkZXJzT2JqZWN0KCZyZXF1ZXN0SGVhZGVycywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKICAg
ICAgICAganNvbk9iamVjdC5zZXQoInJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwog
ICAgICAgICBqc29uT2JqZWN0LnNldCgibWFpblJlc291cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7
CkBAIC0xNzIsNyArMTYyLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0
T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXAKICAgICAgICAganNv
bk9iamVjdC5zZXQoImV4cGVjdGVkQ29udGVudExlbmd0aCIsIG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInN0YXR1c0NvZGUiLCBtX3Jlc3BvbnNlU3Rh
dHVzQ29kZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdWdnZXN0ZWRGaWxlbmFtZSIsIG1f
c3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBKU09OT2JqZWN0IHJlc3BvbnNlSGVhZGVycyA9
IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIEpTT05PYmplY3Qg
cmVzcG9uc2VIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsKICAgICAgICAgcG9w
dWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhlYWRlcnMsIG1fcmVzcG9uc2VIZWFkZXJGaWVs
ZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VIZWFkZXJzIiwgcmVzcG9uc2VI
ZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1
ZSk7CkBAIC0yMDMsMTggKzE5MywxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVT
Y3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogICAgICAg
ICAgICAganNvbk9iamVjdC5zZXQoImVuZFRpbWUiLCBtX2VuZFRpbWUpOwogICAgICAgICBqc29u
T2JqZWN0LnNldCgiZGlkVGltaW5nQ2hhbmdlIiwgdHJ1ZSk7CiAgICAgfQotICAgIAotICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCB1cGRhdGVSZXNvdXJjZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9y
LCAidXBkYXRlUmVzb3VyY2UiKTsKLSAgICB1cGRhdGVSZXNvdXJjZS5hcHBlbmRBcmd1bWVudCht
X2lkZW50aWZpZXIpOwotICAgIHVwZGF0ZVJlc291cmNlLmFwcGVuZEFyZ3VtZW50KGpzb25PYmpl
Y3Quc2NyaXB0T2JqZWN0KCkpOwotICAgIHVwZGF0ZVJlc291cmNlLmNhbGwoaGFkRXhjZXB0aW9u
KTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGlmICghZnJvbnRlbmQtPnVwZGF0ZVJlc291
cmNlKG1faWRlbnRpZmllciwganNvbk9iamVjdCkpCiAgICAgICAgIHJldHVybjsKLQogICAgIG1f
Y2hhbmdlcy5jbGVhckFsbCgpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlOjpyZWxlYXNl
U2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0
JiB3ZWJJbnNwZWN0b3IsIGJvb2wgY2FsbFJlbW92ZVJlc291cmNlKQordm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZTo6cmVsZWFzZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQs
IGJvb2wgY2FsbFJlbW92ZVJlc291cmNlKQogewogICAgIGlmICghbV9zY3JpcHRPYmplY3RDcmVh
dGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMjUsOSArMjA5LDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZTo6cmVsZWFzZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNv
bnN0IFNjcmkKICAgICBpZiAoIWNhbGxSZW1vdmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlbW92ZVJlc291cmNlKHNjcmlwdFN0YXRlLCB3ZWJJ
bnNwZWN0b3IsICJyZW1vdmVSZXNvdXJjZSIpOwotICAgIHJlbW92ZVJlc291cmNlLmFwcGVuZEFy
Z3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgcmVtb3ZlUmVzb3VyY2UuY2FsbCgpOworICAgIGZy
b250ZW5kLT5yZW1vdmVSZXNvdXJjZShtX2lkZW50aWZpZXIpOwogfQogCiBJbnNwZWN0b3JSZXNv
dXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2UuaAppbmRleCAxMDBmZTcxLi4yNTA4MTI0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIENhY2hlZFJlc291cmNlOwogICAgIGNsYXNzIERvY3VtZW50TG9hZGVy
OwogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCkBAIC03
NCw5ICs3NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB+SW5zcGVjdG9yUmVz
b3VyY2UoKTsKIAotICAgICAgICB2b2lkIGNyZWF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSos
IGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKTsKLSAgICAgICAgdm9pZCB1cGRhdGVT
Y3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rv
cik7Ci0gICAgICAgIHZvaWQgcmVsZWFzZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSosIGNvbnN0
IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yLCBib29sIGNhbGxSZW1vdmVSZXNvdXJjZSk7Cisg
ICAgICAgIHZvaWQgY3JlYXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVu
ZCk7CisgICAgICAgIHZvaWQgdXBkYXRlU2NyaXB0T2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBm
cm9udGVuZCk7CisgICAgICAgIHZvaWQgcmVsZWFzZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9u
dGVuZCogZnJvbnRlbmQsIGJvb2wgY2FsbFJlbW92ZVJlc291cmNlKTsKIAogICAgICAgICB2b2lk
IHVwZGF0ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgICAgIHZvaWQgdXBk
YXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwo=
</data>
<flag name="review"
          id="15231"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30475</attachid>
            <date>2009-05-19 09:36:57 -0700</date>
            <delta_ts>2009-05-19 09:40:56 -0700</delta_ts>
            <desc>step_2_patch</desc>
            <filename>json_object_3.txt</filename>
            <type>text/plain</type>
            <size>20470</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODM1NDVkOS4uYjAzZWJlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wNS0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgSlNPTk9iamVjdCB0aGF0IHdyYXBzIFNjcmlw
dE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlhbGl6YXRpb24KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0MTkKKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAg
ICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVIZWFkZXJzT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
T05PYmplY3Q6OkpTT05PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNPTk9iamVjdDo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU09OT2JqZWN0OjpjcmVhdGVOZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9K
U09OT2JqZWN0Lmg6IEFkZGVkLgorCiAyMDA5LTA1LTE5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDA1MzExM2IuLmVhYWNhYzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA5MCw2ICsxMDkwLDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZS5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIFwKIAlX
ZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCisJV2ViQ29yZS9pbnNw
ZWN0b3IvSlNPTk9iamVjdC5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuaCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGVQb2xpY3kuaCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCA1MTVkZmRhLi4xNjNiZDE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTgwNyw2ICs4MDcsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAgICAgaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9k
ZS5jcHAgXAorICAgIGluc3BlY3Rvci9KU09OT2JqZWN0LmNwcCBcCiAgICAgbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNw
cCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2YjU5ZDQ5Li5iMzZm
NmEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE1NjcwLDYgKzE1
NjcwLDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iZnJvbnQtZW5kIg0K
IAkJCQk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
YzVkNWRhLi45OGViMTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtOTg5LDYgKzk4OSw4IEBACiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBE
T01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVu
dEludGVybmFsLmggKi87IH07CiAJCTdBNjc0QkRCMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJl
ci5jcHAgKi87IH07CiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLzsg
fTsKKwkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODUwRkI5RDI3MTAw
ODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovOyB9OworCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVE
MDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuaCAqLzsgfTsK
IAkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ5Rjc3NzUwRUZFQzYy
MDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oICovOyB9OwogCQk4NTAwNEQ5NDBBQ0VF
QUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg4MEFDRUVBRUYwMEM0MzhGNiAvKiBET01T
VkdEZWZzRWxlbWVudC5oICovOyB9OwogCQk4NTAwNEQ5NTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9N
U1ZHRGVmc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTAwNEQ4OTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQubW0g
Ki87IH07CkBAIC01OTY4LDYgKzU5NzAsOCBAQAogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMg
LyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2NzRCREEwRjlFQkY0
RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPTk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQjZGODg2MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09O
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05PYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5Rjc3NzUwRUZFQzYyMDAwOTA4NDlEIC8q
IFN0cm9rZVN0eWxlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJva2VTdHlsZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODRCMkIx
RjcwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUtleUdlbmVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJODRCMkIxRjgwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2Vi
Q29yZUtleUdlbmVyYXRvci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKQEAgLTk3NTgsNiArOTc2Miw4IEBACiAJCQkJMUM4MUI5RkQwRTk3
MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi8sCiAJCQkJMUM4MUI5RkMwRTk3
MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8sCiAJCQkJMUM4MUI5
RkIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovLAorCQkJCTdB
QjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCAqLywKKwkJCQk3QUI2Rjg4
NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovLAogCQkJCUJDQzY0RjVGMERDRkI4
NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICovLAogCQkJKTsKIAkJCXBhdGggPSBp
bnNwZWN0b3I7CkBAIC0xNjg4OSw2ICsxNjg5NSw3IEBACiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAw
N0MzOTgzIC8qIGNfaW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJC
ODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZFMEQ3
RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBQjZGODg4
MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUM5
N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OURFODA5OUU2NDkyMDA1NkU1ODEgLyogaHRtbGVkaXRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDAwMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuaCBpbiBIZWFkZXJzICovLApA
QCAtMTg5MDQsNiArMTg5MTEsNyBAQAogCQkJCTkzRjE5QjAzMDgyNDVFNTkwMDFFOUFCQyAvKiBY
U0xTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRjFFODJGMEMzQzJCQjkwMDZE
QjM5MSAvKiBYU0xURXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNDA4
MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QUI2Rjg4NzBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODUyMDk3RDkzMDIwMDk0QzlFNCAvKiBiaWRpLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODU0MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
IGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggMTRmODUzNi4uNTlkN2NiMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wKQEAgLTY1Miw2ICs2NTIsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIGluc3BlY3Rvci9K
YXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZS5jcHAKICAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKKyAg
ICAgICAgaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwCiAgICAgPC9zZXQ+CiAKICAgICA8c2V0IGFw
cGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NPVVJDRVNfTE9BREVSIj4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcAppbmRleCBmM2M1ODQwLi4wZDUyNTFiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29uc29sZU1lc3NhZ2UuaCIKIAorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKQEAgLTc2LDE2ICs3NywxNiBAQCBDb25z
b2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlTGV2ZWwg
bCwgU2NyaXB0Q2FsbFN0YWNrKgogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rv
cikKIHsKLSAgICBTY3JpcHRPYmplY3QgbWVzc2FnZU9iaiA9IFNjcmlwdE9iamVjdDo6Y3JlYXRl
TmV3KHNjcmlwdFN0YXRlKTsKLSAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInNvdXJj
ZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsKLSAgICBtZXNzYWdlT2JqLnNldChzY3Jp
cHRTdGF0ZSwgImxldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7Ci0gICAgbWVzc2Fn
ZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsaW5lIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xpbmUpKTsK
LSAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInVybCIsIG1fdXJsKTsKLSAgICBtZXNz
YWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
Z3JvdXBMZXZlbCkpOwotICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0YXRlLCAicmVwZWF0Q291
bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKLSAgICAKKyAgICBKU09OT2Jq
ZWN0IGpzb25PYmogPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgIGpz
b25PYmouc2V0KCJzb3VyY2UiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fc291cmNlKSk7CisgICAganNv
bk9iai5zZXQoImxldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7CisgICAganNvbk9i
ai5zZXQoImxpbmUiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkpOworICAgIGpzb25PYmouc2V0
KCJ1cmwiLCBtX3VybCk7CisgICAganNvbk9iai5zZXQoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOworICAgIGpzb25PYmouc2V0KCJyZXBlYXRDb3VudCIsIHN0
YXRpY19jYXN0PGludD4obV9yZXBlYXRDb3VudCkpOworCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRNZXNzYWdlVG9Db25zb2xl
Iik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobWVzc2FnZU9iaik7CisgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoanNvbk9iai5zY3JpcHRPYmplY3QoKSk7CiAgICAgaWYgKCFtX2Zy
YW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZnJh
bWVzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobV9m
cmFtZXNbaV0pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5jcHAKaW5kZXggMmRmOWE5NS4uYWZiYmE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUg
IlNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAt
NjcsMTYgKzY4LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqCiAgICAgaWYgKCFzY3JpcHRT
dGF0ZSB8fCB3ZWJJbnNwZWN0b3IuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3
KHNjcmlwdFN0YXRlKTsKKyAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBKU09OT2JqZWN0Ojpj
cmVhdGVOZXcoc2NyaXB0U3RhdGUpOwogICAgIFNjcmlwdE9iamVjdCBkb21TdG9yYWdlOwogICAg
IGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9mcmFtZS5nZXQoKSwgbV9kb21TdG9y
YWdlLmdldCgpLCBkb21TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJkb21TdG9yYWdlIiwgZG9tU3RvcmFnZSk7Ci0gICAgc2NyaXB0
T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImhvc3QiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLT5ob3N0KCkpOwotICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUs
ICJpc0xvY2FsU3RvcmFnZSIsIG1faXNMb2NhbFN0b3JhZ2UpOworICAgIGpzb25PYmplY3Quc2V0
KCJkb21TdG9yYWdlIiwgZG9tU3RvcmFnZSk7CisgICAganNvbk9iamVjdC5zZXQoImhvc3QiLCBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCkpOworICAgIGpzb25P
YmplY3Quc2V0KCJpc0xvY2FsU3RvcmFnZSIsIG1faXNMb2NhbFN0b3JhZ2UpOwogCiAgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGFkZERPTVN0b3JhZ2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3Rvciwg
ImFkZERPTVN0b3JhZ2UiKTsKLSAgICBhZGRET01TdG9yYWdlLmFwcGVuZEFyZ3VtZW50KHNjcmlw
dE9iamVjdCk7CisgICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNj
cmlwdE9iamVjdCgpKTsKICAgICBhZGRET01TdG9yYWdlLmNhbGwoKTsKICAgICBtX3NjcmlwdE9i
amVjdENyZWF0ZWQgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmNwcAppbmRleCA3NmNhODAxLi4yNjI4MDg5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCiAjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTYwLDE3ICs2MSwxNyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U6OmJpbmQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRPYmplYwogICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNj
cmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBKU09OT2JqZWN0IGpzb25P
YmplY3QgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwogICAgIFNjcmlwdE9i
amVjdCBkYXRhYmFzZTsKICAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1fZGF0
YWJhc2UuZ2V0KCksIGRhdGFiYXNlKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJkYXRhYmFzZSIsIGRhdGFiYXNlKTsKLSAgICBzY3JpcHRPYmpl
Y3Quc2V0KHNjcmlwdFN0YXRlLCAiZG9tYWluIiwgbV9kb21haW4pOwotICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJuYW1lIiwgbV9uYW1lKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0
KHNjcmlwdFN0YXRlLCAidmVyc2lvbiIsIG1fdmVyc2lvbik7CisgICAganNvbk9iamVjdC5zZXQo
ImRhdGFiYXNlIiwgZGF0YWJhc2UpOworICAgIGpzb25PYmplY3Quc2V0KCJkb21haW4iLCBtX2Rv
bWFpbik7CisgICAganNvbk9iamVjdC5zZXQoIm5hbWUiLCBtX25hbWUpOworICAgIGpzb25PYmpl
Y3Quc2V0KCJ2ZXJzaW9uIiwgbV92ZXJzaW9uKTsKICAgICAKICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgYWRkRGF0YWJhc2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFkZERhdGFiYXNlIik7
Ci0gICAgYWRkRGF0YWJhc2UuYXBwZW5kQXJndW1lbnQoc2NyaXB0T2JqZWN0KTsKKyAgICBhZGRE
YXRhYmFzZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKICAgICBh
ZGREYXRhYmFzZS5jYWxsKCk7CiAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCAyY2UxOWNiLi40Mzgw
NTgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCkBAIC0xMDUsMTEgKzEwNiwxMSBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOwogfQogCi1zdGF0aWMgdm9p
ZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTY3JpcHRP
YmplY3QqIG9iamVjdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK3N0YXRpYyB2b2lk
IHBvcHVsYXRlSGVhZGVyc09iamVjdChKU09OT2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMpCiB7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gaGVhZGVycy5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgb2JqZWN0
LT5zZXQoc2NyaXB0U3RhdGUsIGl0LT5maXJzdC5zdHJpbmcoKSwgaXQtPnNlY29uZCk7CisgICAg
ICAgIG9iamVjdC0+c2V0KGl0LT5maXJzdC5zdHJpbmcoKSwgaXQtPnNlY29uZCk7CiAgICAgfQog
fQogCkBAIC0xMTgsMjAgKzExOSwyMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVT
Y3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogICAgIGlm
ICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKSB7CiAgICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7CiAKLSAgICAgICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlcXVlc3RI
ZWFkZXJzID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwotICAgICAgICBw
b3B1bGF0ZUhlYWRlcnNPYmplY3Qoc2NyaXB0U3RhdGUsICZyZXF1ZXN0SGVhZGVycywgbV9yZXF1
ZXN0SGVhZGVyRmllbGRzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwg
InJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwotICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdFVSTCIsIHJlcXVlc3RVUkwoKSk7Ci0gICAgICAgIHNj
cmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7
Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJwYXRoIiwgbV9yZXF1ZXN0
VVJMLnBhdGgoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJsYXN0
UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKLSAgICAg
ICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImlzTWFpblJlc291cmNlIiwgbV9pc01h
aW5SZXNvdXJjZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJjYWNo
ZWQiLCBtX2NhY2hlZCk7CisgICAgICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IEpTT05PYmpl
Y3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIEpTT05PYmplY3QgcmVxdWVzdEhl
YWRlcnMgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBwb3B1
bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMp
OworICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVy
cyk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0VVJMIiwgcmVxdWVzdFVSTCgpKTsK
KyAgICAgICAganNvbk9iamVjdC5zZXQoImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKKyAg
ICAgICAganNvbk9iamVjdC5zZXQoInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKKyAgICAg
ICAganNvbk9iamVjdC5zZXQoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQ
YXRoQ29tcG9uZW50KCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiaXNNYWluUmVzb3VyY2Ui
LCBtX2lzTWFpblJlc291cmNlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImNhY2hlZCIsIG1f
Y2FjaGVkKTsKICAgICAgICAgCiAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGRSZXNvdXJj
ZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAiYWRkUmVzb3VyY2UiKTsKICAgICAgICAgYWRk
UmVzb3VyY2UuYXBwZW5kQXJndW1lbnQobV9pZGVudGlmaWVyKTsKLSAgICAgICAgYWRkUmVzb3Vy
Y2UuYXBwZW5kQXJndW1lbnQoc2NyaXB0T2JqZWN0KTsKKyAgICAgICAgYWRkUmVzb3VyY2UuYXBw
ZW5kQXJndW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAgICAgICAgIGFkZFJlc291
cmNlLmNhbGwoaGFkRXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbikKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE1Miw2MCArMTUzLDYwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2U6OnVwZGF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNj
cmlwCiAKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogCi0gICAgU2NyaXB0T2JqZWN0
IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAg
ICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3Rh
dGUpOwogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVlc3RDaGFuZ2UpKSB7Ci0gICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJ1cmwiLCByZXF1ZXN0VVJMKCkpOwot
ICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZG9tYWluIiwgbV9yZXF1ZXN0
VVJMLmhvc3QoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJwYXRo
IiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0
U3RhdGUsICJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVu
dCgpKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gU2NyaXB0T2JqZWN0
OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwotICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3Qo
c2NyaXB0U3RhdGUsICZyZXF1ZXN0SGVhZGVycywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKLSAg
ICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlcXVlc3RIZWFkZXJzIiwgcmVx
dWVzdEhlYWRlcnMpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibWFp
blJlc291cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJkaWRSZXF1ZXN0Q2hhbmdlIiwgdHJ1ZSk7CisgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJ1cmwiLCByZXF1ZXN0VVJMKCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZG9t
YWluIiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJwYXRo
IiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0
aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAg
SlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRT
dGF0ZSk7CisgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVxdWVzdEhlYWRlcnMsIG1f
cmVxdWVzdEhlYWRlckZpZWxkcyk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0SGVh
ZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoIm1haW5SZXNv
dXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVx
dWVzdENoYW5nZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdl
KFJlc3BvbnNlQ2hhbmdlKSkgewotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAibWltZVR5cGUiLCBtX21pbWVUeXBlKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJleHBlY3RlZENvbnRlbnRMZW5ndGgi
LCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2Ny
aXB0U3RhdGUsICJzdGF0dXNDb2RlIiwgbV9yZXNwb25zZVN0YXR1c0NvZGUpOwotICAgICAgICBz
Y3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3VnZ2VzdGVkRmlsZW5hbWUiLCBtX3N1Z2dl
c3RlZEZpbGVuYW1lKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlc3BvbnNlSGVhZGVycyA9IFNj
cmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVIZWFk
ZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCAmcmVzcG9uc2VIZWFkZXJzLCBtX3Jlc3BvbnNlSGVhZGVy
RmllbGRzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlc3BvbnNl
SGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2Ny
aXB0U3RhdGUsICJkaWRSZXNwb25zZUNoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0
LnNldCgibWltZVR5cGUiLCBtX21pbWVUeXBlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoInN1
Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJleHBlY3RlZENvbnRlbnRMZW5ndGgiLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7
CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdGF0dXNDb2RlIiwgbV9yZXNwb25zZVN0YXR1c0Nv
ZGUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgic3VnZ2VzdGVkRmlsZW5hbWUiLCBtX3N1Z2dl
c3RlZEZpbGVuYW1lKTsKKyAgICAgICAgSlNPTk9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBKU09O
T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBwb3B1bGF0ZUhlYWRlcnNP
YmplY3QoJnJlc3BvbnNlSGVhZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7CisgICAgICAg
IGpzb25PYmplY3Quc2V0KCJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOworICAg
ICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAK
ICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShUeXBlQ2hhbmdlKSkgewotICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAidHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgp
KSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRUeXBlQ2hhbmdl
IiwgdHJ1ZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJ0eXBlIiwgc3RhdGljX2Nhc3Q8aW50
Pih0eXBlKCkpKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFR5cGVDaGFuZ2UiLCB0cnVl
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoTGVuZ3RoQ2hhbmdl
KSkgewotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiY29udGVudExlbmd0
aCIsIG1fbGVuZ3RoKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRp
ZExlbmd0aENoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiY29udGVudExl
bmd0aCIsIG1fbGVuZ3RoKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZExlbmd0aENoYW5n
ZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKENvbXBsZXRp
b25DaGFuZ2UpKSB7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJmYWls
ZWQiLCBtX2ZhaWxlZCk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJm
aW5pc2hlZCIsIG1fZmluaXNoZWQpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0
YXRlLCAiZGlkQ29tcGxldGlvbkNoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNl
dCgiZmFpbGVkIiwgbV9mYWlsZWQpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZmluaXNoZWQi
LCBtX2ZpbmlzaGVkKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZENvbXBsZXRpb25DaGFu
Z2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShUaW1pbmdD
aGFuZ2UpKSB7CiAgICAgICAgIGlmIChtX3N0YXJ0VGltZSA+IDApCi0gICAgICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhcnRUaW1lIiwgbV9zdGFydFRpbWUpOworICAg
ICAgICAgICAganNvbk9iamVjdC5zZXQoInN0YXJ0VGltZSIsIG1fc3RhcnRUaW1lKTsKICAgICAg
ICAgaWYgKG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUgPiAwKQotICAgICAgICAgICAgc2NyaXB0T2Jq
ZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlc3BvbnNlUmVjZWl2ZWRUaW1lIiwgbV9yZXNwb25zZVJl
Y2VpdmVkVGltZSk7CisgICAgICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VSZWNlaXZl
ZFRpbWUiLCBtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lKTsKICAgICAgICAgaWYgKG1fZW5kVGltZSA+
IDApCi0gICAgICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZW5kVGltZSIs
IG1fZW5kVGltZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRU
aW1pbmdDaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJlbmRUaW1l
IiwgbV9lbmRUaW1lKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFRpbWluZ0NoYW5nZSIs
IHRydWUpOwogICAgIH0KICAgICAKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgdXBkYXRlUmVzb3Vy
Y2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgInVwZGF0ZVJlc291cmNlIik7CiAgICAgdXBk
YXRlUmVzb3VyY2UuYXBwZW5kQXJndW1lbnQobV9pZGVudGlmaWVyKTsKLSAgICB1cGRhdGVSZXNv
dXJjZS5hcHBlbmRBcmd1bWVudChzY3JpcHRPYmplY3QpOworICAgIHVwZGF0ZVJlc291cmNlLmFw
cGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2NyaXB0T2JqZWN0KCkpOwogICAgIHVwZGF0ZVJlc291
cmNlLmNhbGwoaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICBy
ZXR1cm47Cg==
</data>
<flag name="review"
          id="15380"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30477</attachid>
            <date>2009-05-19 09:40:56 -0700</date>
            <delta_ts>2009-05-19 09:46:40 -0700</delta_ts>
            <desc>step_2_patch</desc>
            <filename>json_object_4.txt</filename>
            <type>text/plain</type>
            <size>26539</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODM1NDVkOS4uYjAzZWJlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wNS0xMyAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgSlNPTk9iamVjdCB0aGF0IHdyYXBzIFNjcmlw
dE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlhbGl6YXRpb24KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0MTkKKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAg
ICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlOjpiaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVIZWFkZXJzT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
T05PYmplY3Q6OkpTT05PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNPTk9iamVjdDo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTT05PYmplY3Q6OnNjcmlwdE9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU09OT2JqZWN0OjpjcmVhdGVOZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9K
U09OT2JqZWN0Lmg6IEFkZGVkLgorCiAyMDA5LTA1LTE5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDA1MzExM2IuLmVhYWNhYzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA5MCw2ICsxMDkwLDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmls
ZS5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuY3BwIFwKIAlX
ZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0UHJvZmlsZU5vZGUuaCBcCisJV2ViQ29yZS9pbnNw
ZWN0b3IvSlNPTk9iamVjdC5jcHAgXAogCVdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBcCiAJV2Vi
Q29yZS9sb2FkZXIvQ2FjaGUuaCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2FjaGVQb2xpY3kuaCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCA1MTVkZmRhLi4xNjNiZDE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTgwNyw2ICs4MDcsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAgICAgaW5zcGVjdG9yL0ph
dmFTY3JpcHRQcm9maWxlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9k
ZS5jcHAgXAorICAgIGluc3BlY3Rvci9KU09OT2JqZWN0LmNwcCBcCiAgICAgbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuY3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNw
cCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2YjU5ZDQ5Li5iMzZm
NmEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE1NjcwLDYgKzE1
NjcwLDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSmF2YVNjcmlwdFByb2Zp
bGVOb2RlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSlNPTk9iamVjdC5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KIAkJCTxGaWx0ZXINCiAJCQkJTmFtZT0iZnJvbnQtZW5kIg0K
IAkJCQk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
YzVkNWRhLi45OGViMTBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtOTg5LDYgKzk4OSw4IEBACiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBE
T01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVu
dEludGVybmFsLmggKi87IH07CiAJCTdBNjc0QkRCMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E2NzRCRDkwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJl
ci5jcHAgKi87IH07CiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLzsg
fTsKKwkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODUwRkI5RDI3MTAw
ODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovOyB9OworCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVE
MDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuaCAqLzsgfTsK
IAkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ5Rjc3NzUwRUZFQzYy
MDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oICovOyB9OwogCQk4NTAwNEQ5NDBBQ0VF
QUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg4MEFDRUVBRUYwMEM0MzhGNiAvKiBET01T
VkdEZWZzRWxlbWVudC5oICovOyB9OwogCQk4NTAwNEQ5NTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9N
U1ZHRGVmc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NTAwNEQ4OTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQubW0g
Ki87IH07CkBAIC01OTY4LDYgKzU5NzAsOCBAQAogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMg
LyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2NzRCREEwRjlFQkY0
RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPTk9iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBQjZGODg2MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09O
T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05PYmplY3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5Rjc3NzUwRUZFQzYyMDAwOTA4NDlEIC8q
IFN0cm9rZVN0eWxlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJva2VTdHlsZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODRCMkIx
RjcwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUtleUdlbmVyYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJODRCMkIxRjgwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2Vi
Q29yZUtleUdlbmVyYXRvci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKQEAgLTk3NTgsNiArOTc2Miw4IEBACiAJCQkJMUM4MUI5RkQwRTk3
MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmggKi8sCiAJCQkJMUM4MUI5RkMwRTk3
MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAgKi8sCiAJCQkJMUM4MUI5
RkIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oICovLAorCQkJCTdB
QjZGODg1MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCAqLywKKwkJCQk3QUI2Rjg4
NjBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovLAogCQkJCUJDQzY0RjVGMERDRkI4
NEUwMDgxRUYzQiAvKiBsb2NhbGl6ZWRTdHJpbmdzLmpzICovLAogCQkJKTsKIAkJCXBhdGggPSBp
bnNwZWN0b3I7CkBAIC0xNjg4OSw2ICsxNjg5NSw3IEBACiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAw
N0MzOTgzIC8qIGNfaW5zdGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJC
ODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZFMEQ3
RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBQjZGODg4
MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUM5
N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OURFODA5OUU2NDkyMDA1NkU1ODEgLyogaHRtbGVkaXRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNTY5RDAwMEQ3RTJCODIwMDdDMzk4MyAvKiBqbmlfY2xhc3MuaCBpbiBIZWFkZXJzICovLApA
QCAtMTg5MDQsNiArMTg5MTEsNyBAQAogCQkJCTkzRjE5QjAzMDgyNDVFNTkwMDFFOUFCQyAvKiBY
U0xTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRjFFODJGMEMzQzJCQjkwMDZE
QjM5MSAvKiBYU0xURXh0ZW5zaW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0YxOUIwNDA4
MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QUI2Rjg4NzBGQjlEMjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODUyMDk3RDkzMDIwMDk0QzlFNCAvKiBiaWRpLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRUE0ODU0MDk3RDkzMDIwMDk0QzlFNCAvKiBicmVha19saW5lcy5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
IGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggMTRmODUzNi4uNTlkN2NiMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
U291cmNlcy5ia2wKQEAgLTY1Miw2ICs2NTIsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIGluc3BlY3Rvci9K
YXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0UHJv
ZmlsZS5jcHAKICAgICAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRQcm9maWxlTm9kZS5jcHAKKyAg
ICAgICAgaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwCiAgICAgPC9zZXQ+CiAKICAgICA8c2V0IGFw
cGVuZD0iMSIgdmFyPSJXRUJDT1JFX1NPVVJDRVNfTE9BREVSIj4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNv
bGVNZXNzYWdlLmNwcAppbmRleCBmM2M1ODQwLi4wZDUyNTFiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29uc29sZU1lc3NhZ2UuaCIKIAorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKQEAgLTc2LDE2ICs3NywxNiBAQCBDb25z
b2xlTWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlTGV2ZWwg
bCwgU2NyaXB0Q2FsbFN0YWNrKgogCiB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0NvbnNvbGUo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rv
cikKIHsKLSAgICBTY3JpcHRPYmplY3QgbWVzc2FnZU9iaiA9IFNjcmlwdE9iamVjdDo6Y3JlYXRl
TmV3KHNjcmlwdFN0YXRlKTsKLSAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInNvdXJj
ZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsKLSAgICBtZXNzYWdlT2JqLnNldChzY3Jp
cHRTdGF0ZSwgImxldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7Ci0gICAgbWVzc2Fn
ZU9iai5zZXQoc2NyaXB0U3RhdGUsICJsaW5lIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xpbmUpKTsK
LSAgICBtZXNzYWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgInVybCIsIG1fdXJsKTsKLSAgICBtZXNz
YWdlT2JqLnNldChzY3JpcHRTdGF0ZSwgImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
Z3JvdXBMZXZlbCkpOwotICAgIG1lc3NhZ2VPYmouc2V0KHNjcmlwdFN0YXRlLCAicmVwZWF0Q291
bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVwZWF0Q291bnQpKTsKLSAgICAKKyAgICBKU09OT2Jq
ZWN0IGpzb25PYmogPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgIGpz
b25PYmouc2V0KCJzb3VyY2UiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fc291cmNlKSk7CisgICAganNv
bk9iai5zZXQoImxldmVsIiwgc3RhdGljX2Nhc3Q8aW50PihtX2xldmVsKSk7CisgICAganNvbk9i
ai5zZXQoImxpbmUiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbGluZSkpOworICAgIGpzb25PYmouc2V0
KCJ1cmwiLCBtX3VybCk7CisgICAganNvbk9iai5zZXQoImdyb3VwTGV2ZWwiLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZ3JvdXBMZXZlbCkpOworICAgIGpzb25PYmouc2V0KCJyZXBlYXRDb3VudCIsIHN0
YXRpY19jYXN0PGludD4obV9yZXBlYXRDb3VudCkpOworCiAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRNZXNzYWdlVG9Db25zb2xl
Iik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobWVzc2FnZU9iaik7CisgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoanNvbk9iai5zY3JpcHRPYmplY3QoKSk7CiAgICAgaWYgKCFtX2Zy
YW1lcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZnJh
bWVzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobV9m
cmFtZXNbaV0pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VS
ZXNvdXJjZS5jcHAKaW5kZXggMmRmOWE5NS4uYWZiYmE1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgogI2luY2x1ZGUg
IlNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgpAQCAt
NjcsMTYgKzY4LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqCiAgICAgaWYgKCFzY3JpcHRT
dGF0ZSB8fCB3ZWJJbnNwZWN0b3IuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3
KHNjcmlwdFN0YXRlKTsKKyAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBKU09OT2JqZWN0Ojpj
cmVhdGVOZXcoc2NyaXB0U3RhdGUpOwogICAgIFNjcmlwdE9iamVjdCBkb21TdG9yYWdlOwogICAg
IGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRPYmplY3QobV9mcmFtZS5nZXQoKSwgbV9kb21TdG9y
YWdlLmdldCgpLCBkb21TdG9yYWdlKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJkb21TdG9yYWdlIiwgZG9tU3RvcmFnZSk7Ci0gICAgc2NyaXB0
T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImhvc3QiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLT5ob3N0KCkpOwotICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUs
ICJpc0xvY2FsU3RvcmFnZSIsIG1faXNMb2NhbFN0b3JhZ2UpOworICAgIGpzb25PYmplY3Quc2V0
KCJkb21TdG9yYWdlIiwgZG9tU3RvcmFnZSk7CisgICAganNvbk9iamVjdC5zZXQoImhvc3QiLCBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCkpOworICAgIGpzb25P
YmplY3Quc2V0KCJpc0xvY2FsU3RvcmFnZSIsIG1faXNMb2NhbFN0b3JhZ2UpOwogCiAgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGFkZERPTVN0b3JhZ2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3Rvciwg
ImFkZERPTVN0b3JhZ2UiKTsKLSAgICBhZGRET01TdG9yYWdlLmFwcGVuZEFyZ3VtZW50KHNjcmlw
dE9iamVjdCk7CisgICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNj
cmlwdE9iamVjdCgpKTsKICAgICBhZGRET01TdG9yYWdlLmNhbGwoKTsKICAgICBtX3NjcmlwdE9i
amVjdENyZWF0ZWQgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZVJlc291cmNlLmNwcAppbmRleCA3NmNhODAxLi4yNjI4MDg5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRG
dW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCiAjaW5j
bHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTYwLDE3ICs2MSwxNyBAQCB2b2lkIEluc3BlY3RvckRh
dGFiYXNlUmVzb3VyY2U6OmJpbmQoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3Jp
cHRPYmplYwogICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNj
cmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBKU09OT2JqZWN0IGpzb25P
YmplY3QgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwogICAgIFNjcmlwdE9i
amVjdCBkYXRhYmFzZTsKICAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1fZGF0
YWJhc2UuZ2V0KCksIGRhdGFiYXNlKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJkYXRhYmFzZSIsIGRhdGFiYXNlKTsKLSAgICBzY3JpcHRPYmpl
Y3Quc2V0KHNjcmlwdFN0YXRlLCAiZG9tYWluIiwgbV9kb21haW4pOwotICAgIHNjcmlwdE9iamVj
dC5zZXQoc2NyaXB0U3RhdGUsICJuYW1lIiwgbV9uYW1lKTsKLSAgICBzY3JpcHRPYmplY3Quc2V0
KHNjcmlwdFN0YXRlLCAidmVyc2lvbiIsIG1fdmVyc2lvbik7CisgICAganNvbk9iamVjdC5zZXQo
ImRhdGFiYXNlIiwgZGF0YWJhc2UpOworICAgIGpzb25PYmplY3Quc2V0KCJkb21haW4iLCBtX2Rv
bWFpbik7CisgICAganNvbk9iamVjdC5zZXQoIm5hbWUiLCBtX25hbWUpOworICAgIGpzb25PYmpl
Y3Quc2V0KCJ2ZXJzaW9uIiwgbV92ZXJzaW9uKTsKICAgICAKICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgYWRkRGF0YWJhc2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFkZERhdGFiYXNlIik7
Ci0gICAgYWRkRGF0YWJhc2UuYXBwZW5kQXJndW1lbnQoc2NyaXB0T2JqZWN0KTsKKyAgICBhZGRE
YXRhYmFzZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNjcmlwdE9iamVjdCgpKTsKICAgICBh
ZGREYXRhYmFzZS5jYWxsKCk7CiAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCAyY2UxOWNiLi40Mzgw
NTgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCkBAIC0xMDUsMTEgKzEwNiwxMSBAQCB2b2lkIElu
c3BlY3RvclJlc291cmNlOjp1cGRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFuZ2UpOwogfQogCi1zdGF0aWMgdm9p
ZCBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBTY3JpcHRP
YmplY3QqIG9iamVjdCwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK3N0YXRpYyB2b2lk
IHBvcHVsYXRlSGVhZGVyc09iamVjdChKU09OT2JqZWN0KiBvYmplY3QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMpCiB7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gaGVhZGVycy5lbmQoKTsKICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgb2JqZWN0
LT5zZXQoc2NyaXB0U3RhdGUsIGl0LT5maXJzdC5zdHJpbmcoKSwgaXQtPnNlY29uZCk7CisgICAg
ICAgIG9iamVjdC0+c2V0KGl0LT5maXJzdC5zdHJpbmcoKSwgaXQtPnNlY29uZCk7CiAgICAgfQog
fQogCkBAIC0xMTgsMjAgKzExOSwyMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVT
Y3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogICAgIGlm
ICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKSB7CiAgICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uID0g
ZmFsc2U7CiAKLSAgICAgICAgU2NyaXB0T2JqZWN0IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVj
dDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlcXVlc3RI
ZWFkZXJzID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwotICAgICAgICBw
b3B1bGF0ZUhlYWRlcnNPYmplY3Qoc2NyaXB0U3RhdGUsICZyZXF1ZXN0SGVhZGVycywgbV9yZXF1
ZXN0SGVhZGVyRmllbGRzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwg
InJlcXVlc3RIZWFkZXJzIiwgcmVxdWVzdEhlYWRlcnMpOwotICAgICAgICBzY3JpcHRPYmplY3Qu
c2V0KHNjcmlwdFN0YXRlLCAicmVxdWVzdFVSTCIsIHJlcXVlc3RVUkwoKSk7Ci0gICAgICAgIHNj
cmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJob3N0IiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7
Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJwYXRoIiwgbV9yZXF1ZXN0
VVJMLnBhdGgoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJsYXN0
UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKLSAgICAg
ICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImlzTWFpblJlc291cmNlIiwgbV9pc01h
aW5SZXNvdXJjZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJjYWNo
ZWQiLCBtX2NhY2hlZCk7CisgICAgICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IEpTT05PYmpl
Y3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgICAgIEpTT05PYmplY3QgcmVxdWVzdEhl
YWRlcnMgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBwb3B1
bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RIZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMp
OworICAgICAgICBqc29uT2JqZWN0LnNldCgicmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVy
cyk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0VVJMIiwgcmVxdWVzdFVSTCgpKTsK
KyAgICAgICAganNvbk9iamVjdC5zZXQoImhvc3QiLCBtX3JlcXVlc3RVUkwuaG9zdCgpKTsKKyAg
ICAgICAganNvbk9iamVjdC5zZXQoInBhdGgiLCBtX3JlcXVlc3RVUkwucGF0aCgpKTsKKyAgICAg
ICAganNvbk9iamVjdC5zZXQoImxhc3RQYXRoQ29tcG9uZW50IiwgbV9yZXF1ZXN0VVJMLmxhc3RQ
YXRoQ29tcG9uZW50KCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiaXNNYWluUmVzb3VyY2Ui
LCBtX2lzTWFpblJlc291cmNlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImNhY2hlZCIsIG1f
Y2FjaGVkKTsKICAgICAgICAgCiAgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhZGRSZXNvdXJj
ZShzY3JpcHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAiYWRkUmVzb3VyY2UiKTsKICAgICAgICAgYWRk
UmVzb3VyY2UuYXBwZW5kQXJndW1lbnQobV9pZGVudGlmaWVyKTsKLSAgICAgICAgYWRkUmVzb3Vy
Y2UuYXBwZW5kQXJndW1lbnQoc2NyaXB0T2JqZWN0KTsKKyAgICAgICAgYWRkUmVzb3VyY2UuYXBw
ZW5kQXJndW1lbnQoanNvbk9iamVjdC5zY3JpcHRPYmplY3QoKSk7CiAgICAgICAgIGFkZFJlc291
cmNlLmNhbGwoaGFkRXhjZXB0aW9uKTsKICAgICAgICAgaWYgKGhhZEV4Y2VwdGlvbikKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE1Miw2MCArMTUzLDYwIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2U6OnVwZGF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNj
cmlwCiAKICAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOwogCi0gICAgU2NyaXB0T2JqZWN0
IHNjcmlwdE9iamVjdCA9IFNjcmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAg
ICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3Rh
dGUpOwogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKFJlcXVlc3RDaGFuZ2UpKSB7Ci0gICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJ1cmwiLCByZXF1ZXN0VVJMKCkpOwot
ICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZG9tYWluIiwgbV9yZXF1ZXN0
VVJMLmhvc3QoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJwYXRo
IiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0
U3RhdGUsICJsYXN0UGF0aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVu
dCgpKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gU2NyaXB0T2JqZWN0
OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOwotICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3Qo
c2NyaXB0U3RhdGUsICZyZXF1ZXN0SGVhZGVycywgbV9yZXF1ZXN0SGVhZGVyRmllbGRzKTsKLSAg
ICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlcXVlc3RIZWFkZXJzIiwgcmVx
dWVzdEhlYWRlcnMpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAibWFp
blJlc291cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQo
c2NyaXB0U3RhdGUsICJkaWRSZXF1ZXN0Q2hhbmdlIiwgdHJ1ZSk7CisgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJ1cmwiLCByZXF1ZXN0VVJMKCkpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZG9t
YWluIiwgbV9yZXF1ZXN0VVJMLmhvc3QoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJwYXRo
IiwgbV9yZXF1ZXN0VVJMLnBhdGgoKSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0
aENvbXBvbmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICAgICAg
SlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRT
dGF0ZSk7CisgICAgICAgIHBvcHVsYXRlSGVhZGVyc09iamVjdCgmcmVxdWVzdEhlYWRlcnMsIG1f
cmVxdWVzdEhlYWRlckZpZWxkcyk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJyZXF1ZXN0SGVh
ZGVycyIsIHJlcXVlc3RIZWFkZXJzKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoIm1haW5SZXNv
dXJjZSIsIG1faXNNYWluUmVzb3VyY2UpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVx
dWVzdENoYW5nZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdl
KFJlc3BvbnNlQ2hhbmdlKSkgewotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRl
LCAibWltZVR5cGUiLCBtX21pbWVUeXBlKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3Jp
cHRTdGF0ZSwgInN1Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAg
ICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJleHBlY3RlZENvbnRlbnRMZW5ndGgi
LCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2Ny
aXB0U3RhdGUsICJzdGF0dXNDb2RlIiwgbV9yZXNwb25zZVN0YXR1c0NvZGUpOwotICAgICAgICBz
Y3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3VnZ2VzdGVkRmlsZW5hbWUiLCBtX3N1Z2dl
c3RlZEZpbGVuYW1lKTsKLSAgICAgICAgU2NyaXB0T2JqZWN0IHJlc3BvbnNlSGVhZGVycyA9IFNj
cmlwdE9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAgcG9wdWxhdGVIZWFk
ZXJzT2JqZWN0KHNjcmlwdFN0YXRlLCAmcmVzcG9uc2VIZWFkZXJzLCBtX3Jlc3BvbnNlSGVhZGVy
RmllbGRzKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlc3BvbnNl
SGVhZGVycyIsIHJlc3BvbnNlSGVhZGVycyk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2Ny
aXB0U3RhdGUsICJkaWRSZXNwb25zZUNoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0
LnNldCgibWltZVR5cGUiLCBtX21pbWVUeXBlKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoInN1
Z2dlc3RlZEZpbGVuYW1lIiwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGpzb25PYmpl
Y3Quc2V0KCJleHBlY3RlZENvbnRlbnRMZW5ndGgiLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7
CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJzdGF0dXNDb2RlIiwgbV9yZXNwb25zZVN0YXR1c0Nv
ZGUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgic3VnZ2VzdGVkRmlsZW5hbWUiLCBtX3N1Z2dl
c3RlZEZpbGVuYW1lKTsKKyAgICAgICAgSlNPTk9iamVjdCByZXNwb25zZUhlYWRlcnMgPSBKU09O
T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAgICAgICBwb3B1bGF0ZUhlYWRlcnNP
YmplY3QoJnJlc3BvbnNlSGVhZGVycywgbV9yZXNwb25zZUhlYWRlckZpZWxkcyk7CisgICAgICAg
IGpzb25PYmplY3Quc2V0KCJyZXNwb25zZUhlYWRlcnMiLCByZXNwb25zZUhlYWRlcnMpOworICAg
ICAgICBqc29uT2JqZWN0LnNldCgiZGlkUmVzcG9uc2VDaGFuZ2UiLCB0cnVlKTsKICAgICB9CiAK
ICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShUeXBlQ2hhbmdlKSkgewotICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAidHlwZSIsIHN0YXRpY19jYXN0PGludD4odHlwZSgp
KSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRUeXBlQ2hhbmdl
IiwgdHJ1ZSk7CisgICAgICAgIGpzb25PYmplY3Quc2V0KCJ0eXBlIiwgc3RhdGljX2Nhc3Q8aW50
Pih0eXBlKCkpKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFR5cGVDaGFuZ2UiLCB0cnVl
KTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1fY2hhbmdlcy5oYXNDaGFuZ2UoTGVuZ3RoQ2hhbmdl
KSkgewotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiY29udGVudExlbmd0
aCIsIG1fbGVuZ3RoKTsKLSAgICAgICAgc2NyaXB0T2JqZWN0LnNldChzY3JpcHRTdGF0ZSwgImRp
ZExlbmd0aENoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiY29udGVudExl
bmd0aCIsIG1fbGVuZ3RoKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZExlbmd0aENoYW5n
ZSIsIHRydWUpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKENvbXBsZXRp
b25DaGFuZ2UpKSB7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJmYWls
ZWQiLCBtX2ZhaWxlZCk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJm
aW5pc2hlZCIsIG1fZmluaXNoZWQpOwotICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0
YXRlLCAiZGlkQ29tcGxldGlvbkNoYW5nZSIsIHRydWUpOworICAgICAgICBqc29uT2JqZWN0LnNl
dCgiZmFpbGVkIiwgbV9mYWlsZWQpOworICAgICAgICBqc29uT2JqZWN0LnNldCgiZmluaXNoZWQi
LCBtX2ZpbmlzaGVkKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZENvbXBsZXRpb25DaGFu
Z2UiLCB0cnVlKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VzLmhhc0NoYW5nZShUaW1pbmdD
aGFuZ2UpKSB7CiAgICAgICAgIGlmIChtX3N0YXJ0VGltZSA+IDApCi0gICAgICAgICAgICBzY3Jp
cHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAic3RhcnRUaW1lIiwgbV9zdGFydFRpbWUpOworICAg
ICAgICAgICAganNvbk9iamVjdC5zZXQoInN0YXJ0VGltZSIsIG1fc3RhcnRUaW1lKTsKICAgICAg
ICAgaWYgKG1fcmVzcG9uc2VSZWNlaXZlZFRpbWUgPiAwKQotICAgICAgICAgICAgc2NyaXB0T2Jq
ZWN0LnNldChzY3JpcHRTdGF0ZSwgInJlc3BvbnNlUmVjZWl2ZWRUaW1lIiwgbV9yZXNwb25zZVJl
Y2VpdmVkVGltZSk7CisgICAgICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9uc2VSZWNlaXZl
ZFRpbWUiLCBtX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lKTsKICAgICAgICAgaWYgKG1fZW5kVGltZSA+
IDApCi0gICAgICAgICAgICBzY3JpcHRPYmplY3Quc2V0KHNjcmlwdFN0YXRlLCAiZW5kVGltZSIs
IG1fZW5kVGltZSk7Ci0gICAgICAgIHNjcmlwdE9iamVjdC5zZXQoc2NyaXB0U3RhdGUsICJkaWRU
aW1pbmdDaGFuZ2UiLCB0cnVlKTsKKyAgICAgICAgICAgIGpzb25PYmplY3Quc2V0KCJlbmRUaW1l
IiwgbV9lbmRUaW1lKTsKKyAgICAgICAganNvbk9iamVjdC5zZXQoImRpZFRpbWluZ0NoYW5nZSIs
IHRydWUpOwogICAgIH0KICAgICAKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgdXBkYXRlUmVzb3Vy
Y2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgInVwZGF0ZVJlc291cmNlIik7CiAgICAgdXBk
YXRlUmVzb3VyY2UuYXBwZW5kQXJndW1lbnQobV9pZGVudGlmaWVyKTsKLSAgICB1cGRhdGVSZXNv
dXJjZS5hcHBlbmRBcmd1bWVudChzY3JpcHRPYmplY3QpOworICAgIHVwZGF0ZVJlc291cmNlLmFw
cGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2NyaXB0T2JqZWN0KCkpOwogICAgIHVwZGF0ZVJlc291
cmNlLmNhbGwoaGFkRXhjZXB0aW9uKTsKICAgICBpZiAoaGFkRXhjZXB0aW9uKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KU09OT2JqZWN0LmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmIxM2RkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9K
U09OT2JqZWN0LmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU09OT2JqZWN0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSlNPTk9iamVjdDo6SlNPTk9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUpCisgICAgOiBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRlKQoreworICAgIG1fc2NyaXB0
T2JqZWN0ID0gU2NyaXB0T2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworfQorCitib29s
IEpTT05PYmplY3Q6OnNldChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2
YWx1ZSk7Cit9CisKK2Jvb2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IFNjcmlwdE9iamVjdCYgdmFsdWUpCit7CisgICAgcmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldCht
X3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Cit9CisKK2Jvb2wgSlNPTk9iamVjdDo6c2V0KGNv
bnN0IGNoYXIqIG5hbWUsIGNvbnN0IEpTT05PYmplY3QmIHZhbHVlKQoreworICAgIHJldHVybiBz
ZXQobmFtZSwgdmFsdWUuc2NyaXB0T2JqZWN0KCkpOworfQorCitib29sIEpTT05PYmplY3Q6OnNl
dChjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBt
X3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitib29s
IEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1lLCBkb3VibGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIG1fc2NyaXB0T2JqZWN0LnNldChtX3NjcmlwdFN0YXRlLCBuYW1lLCB2YWx1ZSk7Cit9
CisKK2Jvb2wgSlNPTk9iamVjdDo6c2V0KGNvbnN0IGNoYXIqIG5hbWUsIGxvbmcgbG9uZyB2YWx1
ZSkKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Quc2V0KG1fc2NyaXB0U3RhdGUsIG5hbWUs
IHZhbHVlKTsKK30KKworYm9vbCBKU09OT2JqZWN0OjpzZXQoY29uc3QgY2hhciogbmFtZSwgaW50
IHZhbHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRTdGF0ZSwg
bmFtZSwgdmFsdWUpOworfQorCitib29sIEpTT05PYmplY3Q6OnNldChjb25zdCBjaGFyKiBuYW1l
LCBib29sIHZhbHVlKQoreworICAgIHJldHVybiBtX3NjcmlwdE9iamVjdC5zZXQobV9zY3JpcHRT
dGF0ZSwgbmFtZSwgdmFsdWUpOworfQorCitTY3JpcHRPYmplY3QgSlNPTk9iamVjdDo6c2NyaXB0
T2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRPYmplY3Q7Cit9CisKK0pTT05P
YmplY3QgSlNPTk9iamVjdDo6Y3JlYXRlTmV3KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKK3sK
KyAgICByZXR1cm4gSlNPTk9iamVjdChzY3JpcHRTdGF0ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0pTT05PYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zOWU2NGYwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSlNP
Tk9iamVjdC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEpTT05PYmplY3RfaAorI2RlZmlu
ZSBKU09OT2JqZWN0X2gKKworI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBTdHJpbmc7CisK
KyAgICBjbGFzcyBKU09OT2JqZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGJvb2wgc2V0KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEpTT05PYmplY3QmKTsKKyAgICAgICAgYm9vbCBzZXQoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CisgICAgICAgIGJvb2wgc2V0KGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IFN0cmluZyYpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFy
KiBuYW1lLCBkb3VibGUpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBsb25n
IGxvbmcpOworICAgICAgICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBpbnQpOworICAgICAg
ICBib29sIHNldChjb25zdCBjaGFyKiBuYW1lLCBib29sKTsKKyAgICAgICAgU2NyaXB0T2JqZWN0
IHNjcmlwdE9iamVjdCgpIGNvbnN0OworCisgICAgICAgIHN0YXRpYyBKU09OT2JqZWN0IGNyZWF0
ZU5ldyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpOworICAgIHByaXZhdGU6CisgICAgICAgIEpT
T05PYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKTsKKyAgICAgICAgU2NyaXB0U3RhdGUq
IG1fc2NyaXB0U3RhdGU7CisgICAgICAgIFNjcmlwdE9iamVjdCBtX3NjcmlwdE9iamVjdDsKKyAg
ICB9OworfQorCisjZW5kaWYgLy8gSlNPTk9iamVjdF9oCg==
</data>
<flag name="review"
          id="15382"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30478</attachid>
            <date>2009-05-19 09:44:14 -0700</date>
            <delta_ts>2009-05-19 09:58:33 -0700</delta_ts>
            <desc>step_3_patch</desc>
            <filename>frontend_2.txt</filename>
            <type>text/plain</type>
            <size>60111</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjAzZWJlMS4uOWZmNGQ1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiw5OSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFNwbGl0IEluc3BlY3RvckNvbnRyb2xsZXIgaW50byBJ
bnNwZWN0b3JDb250cm9sbGVyIGFuZCBJbnNwZWN0b3JGcm9udGVuZC4gTGF0dGVyIGVuY2Fwc3Vs
YXRlcyBhbGwgZnJvbnRlbmQgaW50ZXJhY3Rpb24gYW5kIGlzIHRoZSBvbmx5IGVudGl0eSBhbGxv
d2VkIHRvIG1ha2UgU2NyaXB0RnVuY3Rpb25DYWxscy4gVGhlIGZ1cnRoZXIgcGxhbiBpcyB0byBz
ZXJpYWxpemUgdGhlc2Ugc2NyaXB0IGZ1bmN0aW9uIGNhbGxzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTQxOQorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6
OmFkZFRvQ29uc29sZSk6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6fkluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpmb2N1c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0V2luZG93VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRBdHRhY2hlZFdpbmRvdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RD
bGVhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlwdE9i
amVjdFJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dQ
YW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzZXRTY3JpcHRP
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnBydW5lUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1p
dExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVDb250ZW50TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNj
cmlwdEltcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZE9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRVc2VET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmFkZFNjcmlwdFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6dG9nZ2xlUmVjb3JkQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmVuYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OmRpc2FibGVQcm9maWxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNhYmxlRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZmFpbGVkVG9QYXJzZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRDb250aW51ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6Ymlu
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjYWxs
U2ltcGxlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Oklu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjp+
SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
Om5ld0pTT05PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
OmFkZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjp1cGRh
dGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6cmVtb3Zl
UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUZv
Y3VzZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpzZXRBdHRh
Y2hlZFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6aW5zcGVj
dGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6c2hvd1BhbmVsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjpwb3B1bGF0ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmRlYnVn
Z2VyV2FzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6ZGVi
dWdnZXJXYXNEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6
cHJvZmlsZXJXYXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Ojpwcm9maWxlcldhc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjpwYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmQ6OmZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRnJvbnRlbmQ6OmFkZFByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmQ6OnNldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmQ6OnBhdXNlZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZDo6cmVzdW1lZFNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZDo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
OmFkZERPTVN0b3JhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5o
OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaDoKKworMjAwOS0wNS0x
MyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBJbnRyb2R1Y2UgSlNPTk9iamVjdCB0
aGF0IHdyYXBzIFNjcmlwdE9iamVjdCBhbmQgU2NyaXB0U3RhdGUqIGZvciBmdXJ0aGVyIHNlcmlh
bGl6YXRpb24KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjU0MTkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGVhYWNhYzMuLjk3Y2JhN2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTA3OSw2ICsx
MDc5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDbGllbnQuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
XAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCisJV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIFwKKwlXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5j
cHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmggXAogCVdlYkNvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDE2M2JkMTcuLjQ0MzhlYWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwpAQCAtODAyLDYgKzgwMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBc
CisgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlLmNwcCBcCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUu
Y3BwIFwKICAgICBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBiMzZmNmEzLi44NDEyZTBmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTE1NjI3LDYgKzE1NjI3LDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JGcm9udGVuZC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRnJvbnRlbmQuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JSZXNvdXJjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5OGViMTBiLi5jODg4
MGQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTkx
LDYgKzk5MSw4IEBACiAJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLzsg
fTsKIAkJN0FCNkY4ODcwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FCNkY4ODUwRkI5RDI3MTAw
ODA1RDAyIC8qIEpTT05PYmplY3QuY3BwICovOyB9OwogCQk3QUI2Rjg4ODBGQjlEMjcxMDA4MDVE
MDIgLyogSlNPTk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FCNkY4ODYwRkI5RDI3MTAwODA1RDAyIC8qIEpTT05PYmplY3QuaCAqLzsgfTsK
KwkJN0FFRDNFMDUwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRUQzRTAzMEZCQjFF
QUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CisJCTdBRUQzRTA2MEZC
QjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIElu
c3BlY3RvckZyb250ZW5kLmggKi87IH07CiAJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBT
dHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIu
aCAqLzsgfTsKIAkJODUwMDREOTQwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAwNEQ4
ODBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCAqLzsgfTsKIAkJODUwMDRE
OTUwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREODkwQUNFRUFFRjAwQzQzOEY2
IC8qIERPTVNWR0RlZnNFbGVtZW50Lm1tICovOyB9OwpAQCAtNTk3Miw2ICs1OTc0LDggQEAKIAkJ
N0E2NzRCREEwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FCNkY4ODUwRkI5RDI3MTAwODA1RDAyIC8qIEpT
T05PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPTk9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBQjZGODg2MEZCOUQyNzEw
MDgwNUQwMiAvKiBKU09OT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTT05PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FFRDNFMDMwRkJC
MUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250
ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5
RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3Ryb2tlU3R5bGVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0
QjJCMUY3MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVLZXlHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTg0QjJCMUY4MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9y
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9
IFdlYkNvcmVLZXlHZW5lcmF0b3IubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC05NzUwLDYgKzk3NTQsOCBAQAogCQkJCTQxRjA2MTcy
MEY1RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCAqLywKIAkJ
CQk0MUYwNjIxMzBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAgKi8sCiAJCQkJNDFGMDYyMTIwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuaCAqLywKKwkJCQk3QUVEM0UwMzBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9y
RnJvbnRlbmQuY3BwICovLAorCQkJCTdBRUQzRTA0MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0
b3JGcm9udGVuZC5oICovLAogCQkJCTQxRjA2MjAwMEY1RjBCNjYwMEEwN0VBQyAvKiBJbnNwZWN0
b3JSZXNvdXJjZS5jcHAgKi8sCiAJCQkJNDFGMDYxRkYwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3Bl
Y3RvclJlc291cmNlLmggKi8sCiAJCQkJMUM4MUJBMDMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwICovLApAQCAtMTY4OTYsNiArMTY5MDIsNyBAQAogCQkJCTFBNTY5
Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QUVEM0UwNjBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REU4MDk5RTY0OTIwMDU2RTU4MSAvKiBodG1sZWRpdGluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlEMDAwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaV9jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODkxMiw2ICsxODkxOSw3IEBACiAJCQkJRTFGMUU4MkYw
QzNDMkJCOTAwNkRCMzkxIC8qIFhTTFRFeHRlbnNpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzRjE5QjA0MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdBQjZGODg3MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdBRUQzRTA1MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODUyMDk3RDkzMDIw
MDk0QzlFNCAvKiBiaWRpLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODU0MDk3RDkzMDIw
MDk0QzlFNCAvKiBicmVha19saW5lcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5k
ZXggNTlkN2NiMi4uZDFiNzBjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTY0Nyw2ICs2NDcsNyBAQCBU
aGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNv
cmUuCiAgICAgICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcAogICAg
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAogICAgICAgICBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKyAgICAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kLmNwcAogICAgICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3Bw
CiAgICAgICAgIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgICAgICBpbnNw
ZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3Nh
Z2UuY3BwCmluZGV4IDBkNTI1MWIuLjYyYTlhYjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAKQEAgLTMxLDEyICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNvbnNvbGVNZXNzYWdlLmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgog
I2luY2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNp
bmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwu
aCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCi0jaW5jbHVkZSAiU2NyaXB0
U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzUsMjggKzczLDE2IEBAIENv
bnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VMZXZl
bCBsLCBTY3JpcHRDYWxsU3RhY2sqCiAgICAgICAgIG1fd3JhcHBlZEFyZ3VtZW50c1tpXSA9IHF1
YXJhbnRpbmVWYWx1ZShjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIuYXJndW1lbnRBdChp
KSk7CiB9CiAKLXZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvQ29uc29sZShTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUsIGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKQordm9pZCBDb25z
b2xlTWVzc2FnZTo6YWRkVG9Db25zb2xlKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsK
LSAgICBKU09OT2JqZWN0IGpzb25PYmogPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3Rh
dGUpOworICAgIEpTT05PYmplY3QganNvbk9iaiA9IGZyb250ZW5kLT5uZXdKU09OT2JqZWN0KCk7
CiAgICAganNvbk9iai5zZXQoInNvdXJjZSIsIHN0YXRpY19jYXN0PGludD4obV9zb3VyY2UpKTsK
ICAgICBqc29uT2JqLnNldCgibGV2ZWwiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbGV2ZWwpKTsKICAg
ICBqc29uT2JqLnNldCgibGluZSIsIHN0YXRpY19jYXN0PGludD4obV9saW5lKSk7CiAgICAganNv
bk9iai5zZXQoInVybCIsIG1fdXJsKTsKICAgICBqc29uT2JqLnNldCgiZ3JvdXBMZXZlbCIsIHN0
YXRpY19jYXN0PGludD4obV9ncm91cExldmVsKSk7CiAgICAganNvbk9iai5zZXQoInJlcGVhdENv
dW50Iiwgc3RhdGljX2Nhc3Q8aW50PihtX3JlcGVhdENvdW50KSk7Ci0KLSAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFkZE1lc3NhZ2VU
b0NvbnNvbGUiKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChqc29uT2JqLnNjcmlwdE9i
amVjdCgpKTsKLSAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudChtX2ZyYW1lc1tpXSk7Ci0gICAgfSBlbHNlIGlmICghbV93cmFw
cGVkQXJndW1lbnRzLmlzRW1wdHkoKSkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV93cmFwcGVkQXJndW1lbnRzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQobV93cmFwcGVkQXJndW1lbnRzW2ldKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChtX21lc3NhZ2UpOwotICAgIH0KLSAgICBmdW5j
dGlvbi5jYWxsKCk7CisgICAgZnJvbnRlbmQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoanNvbk9iaiwg
bV9mcmFtZXMsIG1fd3JhcHBlZEFyZ3VtZW50cywgIG1fbWVzc2FnZSk7CiB9CiAKIGJvb2wgQ29u
c29sZU1lc3NhZ2U6OmlzRXF1YWwoU2NyaXB0U3RhdGUqIHN0YXRlLCBDb25zb2xlTWVzc2FnZSog
bXNnKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKaW5kZXggYjQxYTM4Ni4uMTVl
NmU3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCkBAIC0zOCw3ICszOCw3IEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKyAgICBjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZDsKICAgICBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiAgICAgY2xh
c3MgU2NyaXB0U3RyaW5nOwogCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpOyAg
ICAgICAgCiAgICAgICAgIENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgU2NyaXB0Q2FsbFN0YWNrKiwgdW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNlID0gZmFsc2Up
OwogCi0gICAgICAgIHZvaWQgYWRkVG9Db25zb2xlKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0
T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOworICAgICAgICB2b2lkIGFkZFRvQ29uc29sZShJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQpOwogICAgICAgICB2b2lkIGluY3JlbWVudENvdW50KCkgeyAr
K21fcmVwZWF0Q291bnQ7IH07CiAgICAgICAgIGJvb2wgaXNFcXVhbChTY3JpcHRTdGF0ZSosIENv
bnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IDk2MzI2ZTkuLmQ2MzE4YjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlLmgiCkBA
IC01OCwxMCArNTksNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgi
CiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2NyaXB0T2JqZWN0UXVhcmFu
dGluZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTk5LDEyICs5Nyw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IFVzZXJJbml0aWF0ZWRQcm9m
aWxlTmFtZSA9ICJvcmcud2Via2l0LnByb2ZpbGVzLnVzZXItaW5pdGlhdGVkIjsKIAotc3RhdGlj
IHZvaWQgY2FsbFNpbXBsZUZ1bmN0aW9uKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3Qg
U2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCi17Ci0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKHNjcmlwdFN0YXRlLCB0aGlzT2JqZWN0LCBm
dW5jdGlvbk5hbWUpOwotICAgIGZ1bmN0aW9uLmNhbGwoKTsKLX0KLQogYm9vbCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRTb3VyY2VUb0ZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgc291cmNlLCBOb2RlKiBmcmFtZU5vZGUpCiB7CiAgICAgQVNTRVJUX0FSRyhmcmFt
ZU5vZGUsIGZyYW1lTm9kZSk7CkBAIC0yMDAsNyArMTkyLDYgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6fkluc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIEFTU0VSVCghbV9zY3JpcHRTdGF0ZSk7CiAg
ICAgQVNTRVJUKCFtX2luc3BlY3RlZFBhZ2UpOwogICAgIEFTU0VSVCghbV9wYWdlIHx8IChtX3Bh
Z2UgJiYgIW1fcGFnZS0+cGFyZW50SW5zcGVjdG9yQ29udHJvbGxlcigpKSk7Ci0gICAgQVNTRVJU
KG1fd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSk7CiAKICAgICBkZWxldGVBbGxWYWx1ZXMobV9m
cmFtZVJlc291cmNlcyk7CiAgICAgZGVsZXRlQWxsVmFsdWVzKG1fY29uc29sZU1lc3NhZ2VzKTsK
QEAgLTMxOSw3ICszMTAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9k
ZSogbm9kZSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBtX25vZGVU
b0ZvY3VzID0gbm9kZTsKIAotICAgIGlmIChtX3dlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpIHsK
KyAgICBpZiAoIW1fZnJvbnRlbmQpIHsKICAgICAgICAgbV9zaG93QWZ0ZXJWaXNpYmxlID0gRWxl
bWVudHNQYW5lbDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMzMywxOSArMzI0LDExIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Zm9jdXNOb2RlKCkKICAgICBpZiAoIWVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGhhc1dlYkluc3BlY3RvcigpKTsKKyAg
ICBBU1NFUlQobV9mcm9udGVuZC5nZXQoKSk7CiAgICAgQVNTRVJUKG1fbm9kZVRvRm9jdXMpOwog
Ci0gICAgU2NyaXB0T2JqZWN0IHF1YXJhbnRpbmVkTm9kZTsKLSAgICBpZiAoIWdldFF1YXJhbnRp
bmVkU2NyaXB0T2JqZWN0KG1fbm9kZVRvRm9jdXMuZ2V0KCksIHF1YXJhbnRpbmVkTm9kZSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3Njcmlw
dFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInVwZGF0ZUZvY3VzZWROb2RlIik7Ci0gICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQocXVhcmFudGluZWROb2RlKTsKLQorICAgIG1fZnJvbnRlbmQtPnVw
ZGF0ZUZvY3VzZWROb2RlKG1fbm9kZVRvRm9jdXMuZ2V0KCkpOwogICAgIG1fbm9kZVRvRm9jdXMg
PSAwOwotCi0gICAgZnVuY3Rpb24uY2FsbCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmhpZ2hsaWdodChOb2RlKiBub2RlKQpAQCAtMzc3LDcgKzM2MCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0V2luZG93VmlzaWJsZShib29sIHZpc2libGUsIGJvb2wgYXR0YWNo
ZWQpCiAKICAgICBtX3dpbmRvd1Zpc2libGUgPSB2aXNpYmxlOwogCi0gICAgaWYgKCFoYXNXZWJJ
bnNwZWN0b3IoKSkKKyAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX3dpbmRvd1Zpc2libGUpIHsKQEAgLTQzMSw3ICs0MTQsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
Q29uc29sZU1lcwogICAgIH0KIAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIG1f
cHJldmlvdXNNZXNzYWdlLT5hZGRUb0NvbnNvbGUobV9zY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0
KG1fd2ViSW5zcGVjdG9yKSk7CisgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0NvbnNv
bGUobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xl
YXJDb25zb2xlTWVzc2FnZXMoKQpAQCAtNDc1LDEyICs0NTgsMTAgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpkZXRhY2hXaW5kb3coKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNl
dEF0dGFjaGVkV2luZG93KGJvb2wgYXR0YWNoZWQpCiB7Ci0gICAgaWYgKCFlbmFibGVkKCkgfHwg
IWhhc1dlYkluc3BlY3RvcigpKQorICAgIGlmICghZW5hYmxlZCgpIHx8ICFtX2Zyb250ZW5kKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3Jp
cHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJzZXRBdHRhY2hlZFdpbmRvdyIpOwotICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KGF0dGFjaGVkKTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAg
bV9mcm9udGVuZC0+c2V0QXR0YWNoZWRXaW5kb3coYXR0YWNoZWQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkK
QEAgLTUyNiwxNiArNTA3LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGFuZGxlTW91
c2VQcmVzc09uTm9kZShOb2RlKiBub2RlKQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqIGZyYW1lKQogewotICAgIGlm
ICghZW5hYmxlZCgpIHx8ICFoYXNXZWJJbnNwZWN0b3IoKSkKKyAgICBpZiAoIWVuYWJsZWQoKSB8
fCAhbV9mcm9udGVuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0T2JqZWN0IGRvbVdp
bmRvdzsKLSAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KGZyYW1lLT5kb21XaW5k
b3coKSwgZG9tV2luZG93KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiaW5zcGVjdGVkV2lu
ZG93Q2xlYXJlZCIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGRvbVdpbmRvdyk7Ci0g
ICAgZnVuY3Rpb24uY2FsbCgpOworICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFdpbmRvd1Njcmlw
dE9iamVjdENsZWFyZWQoZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Ondp
bmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSgpCkBAIC01NTYsOCArNTMxLDEwIEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2NyaXB0T2JqZWN0UmVhZHkoKQogICAgIGlmICghbV9zY3JpcHRT
dGF0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6Omdl
dChtX3NjcmlwdFN0YXRlLCAiV2ViSW5zcGVjdG9yIiwgbV93ZWJJbnNwZWN0b3IpKQorICAgIFNj
cmlwdE9iamVjdCB3ZWJJbnNwZWN0b3JPYmo7CisgICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6
OmdldChtX3NjcmlwdFN0YXRlLCAiV2ViSW5zcGVjdG9yIiwgd2ViSW5zcGVjdG9yT2JqKSkKICAg
ICAgICAgcmV0dXJuOworICAgIG1fZnJvbnRlbmQuc2V0KG5ldyBJbnNwZWN0b3JGcm9udGVuZCht
X3NjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3JPYmopKTsKIAogICAgIC8vIE1ha2Ugc3VyZSBvdXIg
d2luZG93IGlzIHZpc2libGUgbm93IHRoYXQgdGhlIHBhZ2UgbG9hZGVkCiAgICAgc2hvd1dpbmRv
dygpOwpAQCAtNTg4LDcgKzU2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvd1Bh
bmVsKFNwZWNpYWxQYW5lbHMgcGFuZWwpCiAKICAgICBzaG93KCk7CiAKLSAgICBpZiAobV93ZWJJ
bnNwZWN0b3IuaGFzTm9WYWx1ZSgpKSB7CisgICAgaWYgKCFtX2Zyb250ZW5kKSB7CiAgICAgICAg
IG1fc2hvd0FmdGVyVmlzaWJsZSA9IHBhbmVsOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTk2LDMzICs1NzMsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3dQYW5lbChTcGVj
aWFsUGFuZWxzIHBhbmVsKQogICAgIGlmIChwYW5lbCA9PSBDdXJyZW50UGFuZWwpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGNvbnN0IGNoYXIqIHNob3dGdW5jdGlvbk5hbWU7Ci0gICAgc3dpdGNo
IChwYW5lbCkgewotICAgICAgICBjYXNlIENvbnNvbGVQYW5lbDoKLSAgICAgICAgICAgIHNob3dG
dW5jdGlvbk5hbWUgPSAic2hvd0NvbnNvbGUiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgRGF0YWJhc2VzUGFuZWw6Ci0gICAgICAgICAgICBzaG93RnVuY3Rpb25OYW1lID0gInNo
b3dEYXRhYmFzZXNQYW5lbCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFbGVt
ZW50c1BhbmVsOgotICAgICAgICAgICAgc2hvd0Z1bmN0aW9uTmFtZSA9ICJzaG93RWxlbWVudHNQ
YW5lbCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQcm9maWxlc1BhbmVsOgot
ICAgICAgICAgICAgc2hvd0Z1bmN0aW9uTmFtZSA9ICJzaG93UHJvZmlsZXNQYW5lbCI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBSZXNvdXJjZXNQYW5lbDoKLSAgICAgICAgICAg
IHNob3dGdW5jdGlvbk5hbWUgPSAic2hvd1Jlc291cmNlc1BhbmVsIjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFNjcmlwdHNQYW5lbDoKLSAgICAgICAgICAgIHNob3dGdW5jdGlv
bk5hbWUgPSAic2hvd1NjcmlwdHNQYW5lbCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
c2hvd0Z1bmN0aW9uTmFtZSA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHNob3dGdW5jdGlvbk5hbWUp
Ci0gICAgICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rv
ciwgc2hvd0Z1bmN0aW9uTmFtZSk7CisgICAgbV9mcm9udGVuZC0+c2hvd1BhbmVsKHBhbmVsKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCkBAIC02MzYsNyArNTg3LDcg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiAjZW5kaWYKICAgICBjbG9zZVdp
bmRvdygpOwogCi0gICAgbV93ZWJJbnNwZWN0b3IgPSBTY3JpcHRPYmplY3QoKTsKKyAgICBtX2Zy
b250ZW5kLnNldCgwKTsKICAgICBtX3NjcmlwdFN0YXRlID0gMDsKIH0KIApAQCAtNjU5LDM0ICs2
MTAsMzQgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMo
KQogCiAgICAgUmVzb3VyY2VzTWFwOjppdGVyYXRvciByZXNvdXJjZXNFbmQgPSBtX3Jlc291cmNl
cy5lbmQoKTsKICAgICBmb3IgKFJlc291cmNlc01hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNl
cy5iZWdpbigpOyBpdCAhPSByZXNvdXJjZXNFbmQ7ICsraXQpCi0gICAgICAgIGl0LT5zZWNvbmQt
PmNyZWF0ZVNjcmlwdE9iamVjdChtX3NjcmlwdFN0YXRlLCBTY3JpcHRPYmplY3QobV93ZWJJbnNw
ZWN0b3IpKTsKKyAgICAgICAgaXQtPnNlY29uZC0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRl
bmQuZ2V0KCkpOwogCiAgICAgdW5zaWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2Fn
ZXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsr
aSkKLSAgICAgICAgbV9jb25zb2xlTWVzc2FnZXNbaV0tPmFkZFRvQ29uc29sZShtX3NjcmlwdFN0
YXRlLCBTY3JpcHRPYmplY3QobV93ZWJJbnNwZWN0b3IpKTsKKyAgICAgICAgbV9jb25zb2xlTWVz
c2FnZXNbaV0tPmFkZFRvQ29uc29sZShtX2Zyb250ZW5kLmdldCgpKTsKIAogI2lmIEVOQUJMRShE
QVRBQkFTRSkKICAgICBEYXRhYmFzZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5k
ID0gbV9kYXRhYmFzZVJlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKERhdGFiYXNlUmVzb3VyY2Vz
U2V0OjppdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZGF0
YWJhc2VzRW5kOyArK2l0KQotICAgICAgICAoKml0KS0+YmluZChtX3NjcmlwdFN0YXRlLCBTY3Jp
cHRPYmplY3QobV93ZWJJbnNwZWN0b3IpKTsKKyAgICAgICAgKCppdCktPmJpbmQobV9mcm9udGVu
ZC5nZXQoKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgRE9NU3RvcmFn
ZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZG9tU3RvcmFnZUVuZCA9IG1fZG9tU3RvcmFnZVJlc291
cmNlcy5lbmQoKTsKICAgICBmb3IgKERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGl0
ID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGRvbVN0b3JhZ2VFbmQ7ICsr
aXQpCi0gICAgICAgICgqaXQpLT5iaW5kKG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dl
Ykluc3BlY3RvcikpOworICAgICAgICAoKml0KS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKICNl
bmRpZgogCi0gICAgY2FsbFNpbXBsZUZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVj
dG9yLCAicG9wdWxhdGVJbnRlcmZhY2UiKTsKKyAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUludGVy
ZmFjZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0
cygpCiB7Ci0gICAgaWYgKCFoYXNXZWJJbnNwZWN0b3IoKSkKKyAgICBpZiAoIW1fZnJvbnRlbmQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2Vz
RW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChSZXNvdXJjZXNNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gcmVzb3VyY2VzRW5kOyArK2l0KQotICAg
ICAgICBpdC0+c2Vjb25kLT5yZWxlYXNlU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIFNjcmlw
dE9iamVjdChtX3dlYkluc3BlY3RvciksIGZhbHNlKTsKKyAgICAgICAgaXQtPnNlY29uZC0+cmVs
ZWFzZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpLCBmYWxzZSk7CiAKICNpZiBFTkFCTEUo
REFUQUJBU0UpCiAgICAgRGF0YWJhc2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9yIGRhdGFiYXNlc0Vu
ZCA9IG1fZGF0YWJhc2VSZXNvdXJjZXMuZW5kKCk7CkBAIC02OTksNyArNjUwLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpyZXNldFNjcmlwdE9iamVjdHMoKQogICAgICAgICAoKml0KS0+
dW5iaW5kKCk7CiAjZW5kaWYKIAotICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRl
LCBtX3dlYkluc3BlY3RvciwgInJlc2V0Iik7CisgICAgbV9mcm9udGVuZC0+cmVzZXQoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwcnVuZVJlc291cmNlcyhSZXNvdXJjZXNNYXAq
IHJlc291cmNlTWFwLCBEb2N1bWVudExvYWRlciogbG9hZGVyVG9LZWVwKQpAQCAtNzE2LDcgKzY2
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cHJ1bmVSZXNvdXJjZXMoUmVzb3VyY2Vz
TWFwKiByZXNvdXJjZU1hcCwgRG9jdW1lbnRMb2FkCiAgICAgICAgIGlmICghbG9hZGVyVG9LZWVw
IHx8ICFyZXNvdXJjZS0+aXNTYW1lTG9hZGVyKGxvYWRlclRvS2VlcCkpIHsKICAgICAgICAgICAg
IHJlbW92ZVJlc291cmNlKHJlc291cmNlKTsKICAgICAgICAgICAgIGlmICh3aW5kb3dWaXNpYmxl
KCkpCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlbGVhc2VTY3JpcHRPYmplY3QobV9zY3Jp
cHRTdGF0ZSwgU2NyaXB0T2JqZWN0KG1fd2ViSW5zcGVjdG9yKSwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgcmVzb3VyY2UtPnJlbGVhc2VTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSwgdHJ1
ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03NTMsNyArNzA0LDcgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYWRkIHRoZSBtYWluIHJlc291cmNlIHVudGlsIGl0cyBs
b2FkIGlzIGNvbW1pdHRlZC4gVGhpcyBpcwogICAgICAgICAgICAgICAgIC8vIG5lZWRlZCB0byBr
ZWVwIHRoZSBsb2FkIGZvciBhIHVzZXItZW50ZXJlZCBVUkwgZnJvbSBzaG93aW5nIHVwIGluIHRo
ZQogICAgICAgICAgICAgICAgIC8vIGxpc3Qgb2YgcmVzb3VyY2VzIGZvciB0aGUgcGFnZSB0aGV5
IGFyZSBuYXZpZ2F0aW5nIGF3YXkgZnJvbS4KLSAgICAgICAgICAgICAgICBtX21haW5SZXNvdXJj
ZS0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYklu
c3BlY3RvcikpOworICAgICAgICAgICAgICAgIG1fbWFpblJlc291cmNlLT5jcmVhdGVTY3JpcHRP
YmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIFBhZ2VzIGxvYWRlZCBmcm9tIHRoZSBwYWdlIGNhY2hlIGFyZSBjb21taXR0ZWQg
YmVmb3JlCiAgICAgICAgICAgICAgICAgLy8gbV9tYWluUmVzb3VyY2UgaXMgdGhlIHJpZ2h0IHJl
c291cmNlIGZvciB0aGlzIGxvYWQsIHNvIHdlCkBAIC04MzMsNyArNzg0LDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwKICAgICBhZGRSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7CiAKICAgICBp
ZiAod2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+Y3JlYXRlU2NyaXB0T2JqZWN0
KG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3RvcikpOworICAgICAgICBy
ZXNvdXJjZS0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKQEAgLTg1NSw3ICs4MDYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKHdpbmRvd1Zp
c2libGUoKSAmJiBsb2FkZXItPmlzTG9hZGluZ0Zyb21DYWNoZWRQYWdlKCkgJiYgcmVzb3VyY2Ug
PT0gbV9tYWluUmVzb3VyY2UpCi0gICAgICAgIHJlc291cmNlLT5jcmVhdGVTY3JpcHRPYmplY3Qo
bV9zY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KG1fd2ViSW5zcGVjdG9yKSk7CisgICAgICAgIHJl
c291cmNlLT5jcmVhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6d2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC04NzUsNyArODI2LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWYKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2UgIT0gbV9tYWlu
UmVzb3VyY2UgJiYgd2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+Y3JlYXRlU2Ny
aXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9iamVjdChtX3dlYkluc3BlY3RvcikpOwor
ICAgICAgICByZXNvdXJjZS0+Y3JlYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC04OTEsNyArODQyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW4K
ICAgICByZXNvdXJjZS0+bWFya1Jlc3BvbnNlUmVjZWl2ZWRUaW1lKCk7CiAKICAgICBpZiAod2lu
ZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fc2Ny
aXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlw
dE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgaW50IGxlbmd0aFJlY2VpdmVkKQpAQCAtOTA2LDcgKzg1Nyw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nCiAgICAgcmVzb3VyY2UtPmFkZExlbmd0aChsZW5ndGhSZWNlaXZl
ZCk7CiAKICAgICBpZiAod2luZG93VmlzaWJsZSgpKQotICAgICAgICByZXNvdXJjZS0+dXBkYXRl
U2NyaXB0T2JqZWN0KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgcmVz
b3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX2Zyb250ZW5kLmdldCgpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtOTI1LDcgKzg3Niw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpCiAgICAgYWRkUmVzb3VyY2UocmVzb3VyY2UuZ2V0KCkpOwogCiAgICAgaWYgKHdp
bmRvd1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVwZGF0ZVNjcmlwdE9iamVjdChtX3Nj
cmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rvcik7CisgICAgICAgIHJlc291cmNlLT51cGRhdGVTY3Jp
cHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIC8qZXJyb3IqLykKQEAgLTk0NSw3ICs4OTYsNyBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaQogICAgIGFkZFJlc291cmNlKHJlc291cmNlLmdldCgpKTsK
IAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3Jp
cHRPYmplY3QobV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IpOworICAgICAgICByZXNvdXJj
ZS0+dXBkYXRlU2NyaXB0T2JqZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKQpAQCAt
OTYwLDcgKzkxMSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpCiAgICAgcmVzb3VyY2UtPnNl
dFhNTEh0dHBSZXNwb25zZVRleHQoc291cmNlU3RyaW5nKTsKIAogICAgIGlmICh3aW5kb3dWaXNp
YmxlKCkpCi0gICAgICAgIHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9zY3JpcHRTdGF0
ZSwgbV93ZWJJbnNwZWN0b3IpOworICAgICAgICByZXNvdXJjZS0+dXBkYXRlU2NyaXB0T2JqZWN0
KG1fZnJvbnRlbmQuZ2V0KCkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNjcmlw
dEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcpCkBAIC05NzcsNyArOTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzY3Jp
cHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXNvdXJjZS0+c2V0WE1MSHR0cFJlc3BvbnNlVGV4dChTY3JpcHRTdHJpbmcoc291cmNlU3RyaW5n
KSk7CiAgICAgCiAgICAgaWYgKHdpbmRvd1Zpc2libGUoKSkKLSAgICAgICAgcmVzb3VyY2UtPnVw
ZGF0ZVNjcmlwdE9iamVjdChtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rvcik7CisgICAgICAg
IHJlc291cmNlLT51cGRhdGVTY3JpcHRPYmplY3QobV9mcm9udGVuZC5nZXQoKSk7CiB9CiAKIApA
QCAtOTkyLDcgKzk0Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkT3BlbkRhdGFi
YXNlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21hCiAgICAgbV9kYXRhYmFz
ZVJlc291cmNlcy5hZGQocmVzb3VyY2UpOwogCiAgICAgaWYgKHdpbmRvd1Zpc2libGUoKSkKLSAg
ICAgICAgcmVzb3VyY2UtPmJpbmQobV9zY3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0KG1fd2ViSW5z
cGVjdG9yKSk7CisgICAgICAgIHJlc291cmNlLT5iaW5kKG1fZnJvbnRlbmQuZ2V0KCkpOwogfQog
I2VuZGlmCiAKQEAgLTEwMTIsNyArOTYzLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRVc2VET01TdG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2EKIAog
ICAgIG1fZG9tU3RvcmFnZVJlc291cmNlcy5hZGQocmVzb3VyY2UpOwogICAgIGlmICh3aW5kb3dW
aXNpYmxlKCkpCi0gICAgICAgIHJlc291cmNlLT5iaW5kKG1fc2NyaXB0U3RhdGUsIFNjcmlwdE9i
amVjdChtX3dlYkluc3BlY3RvcikpOworICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5k
LmdldCgpKTsKIH0KICNlbmRpZgogCkBAIC0xMDU1LDExICsxMDA2LDEzIEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6YWRkUHJvZmlsZU1lc3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxQcm9m
aWxlPiBwcnBQcm9mCiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0UHJvZmls
ZShQcm9maWxlKiBwcm9maWxlKQogewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbiht
X3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImFkZFByb2ZpbGUiKTsKKyAgICBpZiAoIW1f
ZnJvbnRlbmQpCisgICAgICAgIHJldHVybjsKKwogICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKLSAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0b0pTKG1fc2NyaXB0U3RhdGUsIHByb2ZpbGUpKTsK
LSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAgbV9mcm9udGVuZC0+YWRkUHJvZmlsZSh0b0pTKG1f
c2NyaXB0U3RhdGUsIHByb2ZpbGUpKTsKIH0KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
dGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmdTb29uKCkKIHsKICAgICBtX3N0YXJ0UHJvZmlsaW5n
LnN0YXJ0T25lU2hvdCgwKTsKQEAgLTExMDksMTIgKzEwNjIsOSBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjp0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZykKIHsKLSAgICBp
ZiAoIWhhc1dlYkluc3BlY3RvcigpKQorICAgIGlmICghbV9mcm9udGVuZCkKICAgICAgICAgcmV0
dXJuOwotCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1f
d2ViSW5zcGVjdG9yLCAic2V0UmVjb3JkaW5nUHJvZmlsZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KGlzUHJvZmlsaW5nKTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAgbV9mcm9u
dGVuZC0+c2V0UmVjb3JkaW5nUHJvZmlsZShpc1Byb2ZpbGluZyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZW5hYmxlUHJvZmlsZXIoYm9vbCBza2lwUmVjb21waWxlKQpAQCAtMTEy
Nyw4ICsxMDc3LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVQcm9maWxlcihi
b29sIHNraXBSZWNvbXBpbGUpCiAgICAgaWYgKCFza2lwUmVjb21waWxlKQogICAgICAgICBKYXZh
U2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigp
OwogCi0gICAgaWYgKGhhc1dlYkluc3BlY3RvcigpKQotICAgICAgICBjYWxsU2ltcGxlRnVuY3Rp
b24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJwcm9maWxlcldhc0VuYWJsZWQiKTsK
KyAgICBpZiAobV9mcm9udGVuZC5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZC0+cHJvZmlsZXJX
YXNFbmFibGVkKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZVByb2Zp
bGVyKCkKQEAgLTExNDAsOCArMTA5MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlz
YWJsZVByb2ZpbGVyKCkKIAogICAgIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVj
b21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CiAKLSAgICBpZiAoaGFzV2ViSW5zcGVjdG9yKCkp
Ci0gICAgICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3Rv
ciwgInByb2ZpbGVyV2FzRGlzYWJsZWQiKTsKKyAgICBpZiAobV9mcm9udGVuZC5nZXQoKSkKKyAg
ICAgICAgbV9mcm9udGVuZC0+cHJvZmlsZXJXYXNEaXNhYmxlZCgpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuYWJsZURlYnVnZ2VyKCkKQEAgLTExNDksNyArMTA5OSw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXIoKQogICAgIGlmICghZW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fc2NyaXB0U3RhdGUgfHwgbV93ZWJJ
bnNwZWN0b3IuaGFzTm9WYWx1ZSgpKSB7CisgICAgaWYgKCFtX3NjcmlwdFN0YXRlIHx8ICFtX2Zy
b250ZW5kKSB7CiAgICAgICAgIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24gPSB0cnVlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTE2Miw3ICsxMTEyLDcgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjplbmFibGVEZWJ1Z2dlcigpCiAgICAgbV9kZWJ1Z2dlckVuYWJsZWQgPSB0cnVl
OwogICAgIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24gPSBmYWxzZTsKIAotICAgIGNhbGxTaW1w
bGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRW5h
YmxlZCIpOworICAgIG1fZnJvbnRlbmQtPmRlYnVnZ2VyV2FzRW5hYmxlZCgpOwogfQogCiB2b2lk
IEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcigpCkBAIC0xMTc3LDggKzExMjcs
OCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcigpCiAgICAgbV9k
ZWJ1Z2dlckVuYWJsZWQgPSBmYWxzZTsKICAgICBtX2F0dGFjaERlYnVnZ2VyV2hlblNob3duID0g
ZmFsc2U7CiAKLSAgICBpZiAoaGFzV2ViSW5zcGVjdG9yKCkpCi0gICAgICAgIGNhbGxTaW1wbGVG
dW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImRlYnVnZ2VyV2FzRGlzYWJs
ZWQiKTsKKyAgICBpZiAobV9mcm9udGVuZC5nZXQoKSkKKyAgICAgICAgbV9mcm9udGVuZC0+ZGVi
dWdnZXJXYXNEaXNhYmxlZCgpOwogfQogCiBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBJbnNwZWN0b3JD
b250cm9sbGVyOjpjdXJyZW50Q2FsbEZyYW1lKCkgY29uc3QKQEAgLTEyNDUsMzMgKzExOTUsMjIg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVCcmVha3BvaW50KGludHB0cl90IHNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmUKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aWRQYXJzZVNvdXJjZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiB7Ci0g
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVj
dG9yLCAicGFyc2VkU2NyaXB0U291cmNlIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzb3VyY2UucHJvdmlkZXIoKS0+YXNJRCgpKSk7Ci0gICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlLnByb3ZpZGVyKCktPnVybCgpKTsKLSAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OlVTdHJpbmcoc291cmNlLmRhdGEoKSwgc291cmNl
Lmxlbmd0aCgpKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlLmZpcnN0TGlu
ZSgpKTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7CisgICAgbV9mcm9udGVuZC0+cGFyc2VkU2NyaXB0
U291cmNlKHNvdXJjZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZmFpbGVkVG9Q
YXJzZVNvdXJjZShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGludCBlcnJv
ckxpbmUsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJmYWlsZWRUb1Bh
cnNlU2NyaXB0U291cmNlIik7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc291cmNlLnBy
b3ZpZGVyKCktPnVybCgpKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChKU0M6OlVTdHJp
bmcoc291cmNlLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoc291cmNlLmZpcnN0TGluZSgpKTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChlcnJvckxpbmUpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGVycm9yTWVzc2FnZSk7
Ci0gICAgZnVuY3Rpb24uY2FsbCgpOworICAgIG1fZnJvbnRlbmQtPmZhaWxlZFRvUGFyc2VTY3Jp
cHRTb3VyY2Uoc291cmNlLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkUGF1c2UoKQogewotICAgIGNhbGxTaW1wbGVGdW5jdGlvbiht
X3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIpOworICAgIG1fZnJv
bnRlbmQtPnBhdXNlZFNjcmlwdCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRp
ZENvbnRpbnVlKCkKIHsKLSAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93
ZWJJbnNwZWN0b3IsICJyZXN1bWVkU2NyaXB0Iik7CisgICAgbV9mcm9udGVuZC0+cmVzdW1lZFNj
cmlwdCgpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCAxODA0ZjYwLi5kODZmNDRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNs
dWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKICNpbmNsdWRlICJU
aW1lci5oIgpAQCAtNTgsNiArNTcsNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGll
bnQ7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7
CiBjbGFzcyBTdG9yYWdlQXJlYTsKIGNsYXNzIE5vZGU7CkBAIC02Niw2ICs2Niw3IEBAIHN0cnVj
dCBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKK2NsYXNzIFNjcmlwdE9iamVjdDsKIGNs
YXNzIFNjcmlwdFN0cmluZzsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIApAQCAtMjY5LDcgKzI3MCw2
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJ
bnNwZWN0b3JDbGllbnQqKTsKLSAgICBib29sIGhhc1dlYkluc3BlY3RvcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0U3RhdGUgJiYgIW1fd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKTsgfQogICAg
IHZvaWQgZm9jdXNOb2RlKCk7CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKFNjcmlwdFN0
YXRlKiwgQ29uc29sZU1lc3NhZ2UqKTsKQEAgLTI4NSw2ICsyODUsNyBAQCBwcml2YXRlOgogCiAg
ICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7
CisgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2Zyb250ZW5kOwogICAgIFBhZ2UqIG1f
cGFnZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBSZWZQdHI8SW5zcGVj
dG9yUmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwpAQCAtMzAwLDcgKzMwMSw2IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgIERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQgbV9k
b21TdG9yYWdlUmVzb3VyY2VzOwogI2VuZGlmCi0gICAgU2NyaXB0T2JqZWN0IG1fd2ViSW5zcGVj
dG9yOwogICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOwogICAgIGJvb2wgbV93aW5kb3dW
aXNpYmxlOwogICAgIFNwZWNpYWxQYW5lbHMgbV9zaG93QWZ0ZXJWaXNpYmxlOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKaW5kZXggYWZi
YmE1YS4uMWYzNTIyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlUmVzb3VyY2UuY3BwCkBAIC0zNSwxMCArMzUsOSBAQAogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgi
CiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5o
IgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCIKLSNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2UuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAg
LTU4LDI4ICs1NywyMCBAQCBib29sIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6aXNTYW1l
SG9zdEFuZFR5cGUoRnJhbWUqIGZyYW1lLCBib29sIGlzTG9jYWxTdAogICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQ2FzZShtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0
KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5ob3N0KCkpICYmIG1faXNM
b2NhbFN0b3JhZ2UgPT0gaXNMb2NhbFN0b3JhZ2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlOjpiaW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0
T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6
YmluZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAgICAgaWYgKG1fc2NyaXB0T2Jq
ZWN0Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKHNjcmlwdFN0YXRlKTsK
LSAgICBBU1NFUlQoIXdlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkpOwotICAgIGlmICghc2NyaXB0
U3RhdGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3Jp
cHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0pTT05P
YmplY3QoKTsKICAgICBTY3JpcHRPYmplY3QgZG9tU3RvcmFnZTsKICAgICBpZiAoIWdldFF1YXJh
bnRpbmVkU2NyaXB0T2JqZWN0KG1fZnJhbWUuZ2V0KCksIG1fZG9tU3RvcmFnZS5nZXQoKSwgZG9t
U3RvcmFnZSkpCiAgICAgICAgIHJldHVybjsKICAgICBqc29uT2JqZWN0LnNldCgiZG9tU3RvcmFn
ZSIsIGRvbVN0b3JhZ2UpOwogICAgIGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpKTsKICAgICBqc29uT2JqZWN0LnNldCgi
aXNMb2NhbFN0b3JhZ2UiLCBtX2lzTG9jYWxTdG9yYWdlKTsKLQotICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBhZGRET01TdG9yYWdlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRET01TdG9y
YWdlIik7Ci0gICAgYWRkRE9NU3RvcmFnZS5hcHBlbmRBcmd1bWVudChqc29uT2JqZWN0LnNjcmlw
dE9iamVjdCgpKTsKLSAgICBhZGRET01TdG9yYWdlLmNhbGwoKTsKLSAgICBtX3NjcmlwdE9iamVj
dENyZWF0ZWQgPSB0cnVlOworICAgIGlmIChmcm9udGVuZC0+YWRkRE9NU3RvcmFnZShqc29uT2Jq
ZWN0KSkKKyAgICAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6OnVuYmluZCgpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oCmluZGV4IDQ3ZDNmZTAuLjNlMDU4OTcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
CkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0b3Jh
Z2U7CiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAKICAg
ICBjbGFzcyBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U+IHsKICAgICBwdWJsaWM6CkBAIC01Miw3ICs1Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKGRvbVN0b3JhZ2UsIGlzTG9jYWxTdG9yYWdlLCBm
cmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBiaW5kKFNjcmlwdFN0YXRlKiwgY29u
c3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOworICAgICAgICB2b2lkIGJpbmQoSW5zcGVj
dG9yRnJvbnRlbmQqIGZyb250ZW5kKTsKICAgICAgICAgdm9pZCB1bmJpbmQoKTsKIAogICAgICAg
ICBib29sIGlzU2FtZUhvc3RBbmRUeXBlKEZyYW1lKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkgY29u
c3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3Bw
CmluZGV4IDI2MjgwODkuLmI2MTM0NGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCkBAIC0zNSwxMCArMzUsMTAgQEAKICNpbmNsdWRlICJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKLSNp
bmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKICNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFy
YW50aW5lLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUxLDE3ICs1MSwxMiBAQCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlKERhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgUwogewogfQog
Ci12b2lkIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQoU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlLCBjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3RvcikKK3ZvaWQgSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZTo6YmluZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB7CiAg
ICAgaWYgKG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUKHNjcmlwdFN0YXRlKTsKLSAgICBBU1NFUlQoIXdlYkluc3BlY3Rvci5oYXNOb1ZhbHVlKCkp
OwotICAgIGlmICghc2NyaXB0U3RhdGUgfHwgd2ViSW5zcGVjdG9yLmhhc05vVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgSlNPTk9iamVjdCBqc29uT2JqZWN0ID0gSlNPTk9iamVjdDo6
Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKKyAgICBKU09OT2JqZWN0IGpzb25PYmplY3QgPSBmcm9u
dGVuZC0+bmV3SlNPTk9iamVjdCgpOwogICAgIFNjcmlwdE9iamVjdCBkYXRhYmFzZTsKICAgICBp
ZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1fZGF0YWJhc2UuZ2V0KCksIGRhdGFiYXNl
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjksMTEgKzY0LDggQEAgdm9pZCBJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlOjpiaW5kKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0
T2JqZWMKICAgICBqc29uT2JqZWN0LnNldCgiZG9tYWluIiwgbV9kb21haW4pOwogICAgIGpzb25P
YmplY3Quc2V0KCJuYW1lIiwgbV9uYW1lKTsKICAgICBqc29uT2JqZWN0LnNldCgidmVyc2lvbiIs
IG1fdmVyc2lvbik7Ci0gICAgCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGFkZERhdGFiYXNlKHNj
cmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGREYXRhYmFzZSIpOwotICAgIGFkZERhdGFiYXNl
LmFwcGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2NyaXB0T2JqZWN0KCkpOwotICAgIGFkZERhdGFi
YXNlLmNhbGwoKTsKLSAgICBtX3NjcmlwdE9iamVjdENyZWF0ZWQgPSB0cnVlOworICAgIGlmIChm
cm9udGVuZC0+YWRkRGF0YWJhc2UoanNvbk9iamVjdCkpCisgICAgICAgIG1fc2NyaXB0T2JqZWN0
Q3JlYXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6dW5i
aW5kKCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaApp
bmRleCAxYTBhNjU3Li4zOGY5ZmExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VSZXNvdXJjZS5oCkBAIC00Miw3ICs0Miw4IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKyAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZDsKKyAgICAKICAgICBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gY3JlYXRlKERh
dGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQpAQCAtNTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UoZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbikpOwogICAgICAgICB9CiAK
LSAgICAgICAgdm9pZCBiaW5kKFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJ
bnNwZWN0b3IpOworICAgICAgICB2b2lkIGJpbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KTsKICAgICAgICAgdm9pZCB1bmJpbmQoKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzMzYTViNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmNwcApAQCAtMCwwICsxLDI3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKworI2luY2x1ZGUgIkNvbnNvbGVNZXNzYWdlLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiICAv
LyBUT0RPKHBmZWxkbWFuKTogRXh0cmFjdCBTcGVjaWFsUGFuZWxzIHRvIHJlbW92ZSBpbmNsdWRl
LgorI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RnVuY3Rpb25DYWxsLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisj
aW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKKyNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNW
YWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgY2FsbFNpbXBsZUZ1bmN0aW9uKFNjcmlwdFN0YXRl
KiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB0aGlzT2JqZWN0LCBjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKHNjcmlw
dFN0YXRlLCB0aGlzT2JqZWN0LCBmdW5jdGlvbk5hbWUpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsK
K30KKworSW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZyb250ZW5kKFNjcmlwdFN0YXRlKiBz
Y3JpcHRTdGF0ZSwgU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvcikKKyAgICA6IG1fc2NyaXB0U3Rh
dGUoc2NyaXB0U3RhdGUpCisgICAgLCBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpCit7Cit9
CisKK0luc3BlY3RvckZyb250ZW5kOjp+SW5zcGVjdG9yRnJvbnRlbmQoKSAKK3sKKyAgICBtX3dl
Ykluc3BlY3RvciA9IFNjcmlwdE9iamVjdCgpOworfQorCitKU09OT2JqZWN0IEluc3BlY3RvckZy
b250ZW5kOjpuZXdKU09OT2JqZWN0KCkgeworICAgIHJldHVybiBKU09OT2JqZWN0OjpjcmVhdGVO
ZXcobV9zY3JpcHRTdGF0ZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmFkZE1lc3Nh
Z2VUb0NvbnNvbGUoY29uc3QgSlNPTk9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNj
cmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJn
dW1lbnRzLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiYWRkTWVzc2FnZVRvQ29u
c29sZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3NhZ2VPYmouc2NyaXB0T2Jq
ZWN0KCkpOworICAgIGlmICghZnJhbWVzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZnJhbWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoZnJhbWVzW2ldKTsKKyAgICB9IGVsc2UgaWYgKCF3cmFwcGVkQXJndW1l
bnRzLmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd3JhcHBl
ZEFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KHdyYXBwZWRBcmd1bWVudHNbaV0pOworICAgIH0gZWxzZQorICAgICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChtZXNzYWdlKTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKK2Jvb2wg
SW5zcGVjdG9yRnJvbnRlbmQ6OmFkZFJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBKU09OT2JqZWN0JiByZXNvdXJjZU9iaikKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJhZGRSZXNvdXJjZSIpOworICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGlkZW50aWZpZXIpOworICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KHJlc291cmNlT2JqLnNjcmlwdE9iamVjdCgpKTsKKyAgICBib29sIGhhZEV4Y2Vw
dGlvbiA9IGZhbHNlOworICAgIGZ1bmN0aW9uLmNhbGwoaGFkRXhjZXB0aW9uKTsKKyAgICByZXR1
cm4gIWhhZEV4Y2VwdGlvbjsKK30KKworYm9vbCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlUmVz
b3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEpTT05PYmplY3QmIHJlc291cmNlT2Jq
KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dl
Ykluc3BlY3RvciwgInVwZGF0ZVJlc291cmNlIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoaWRlbnRpZmllcik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocmVzb3VyY2VPYmou
c2NyaXB0T2JqZWN0KCkpOworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgZnVu
Y3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOworICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOworfQor
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpyZW1vdmVSZXNvdXJjZShsb25nIGxvbmcgaWRlbnRp
ZmllcikKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwg
bV93ZWJJbnNwZWN0b3IsICJyZW1vdmVSZXNvdXJjZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGlkZW50aWZpZXIpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JGcm9udGVuZDo6dXBkYXRlRm9jdXNlZE5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBTY3Jp
cHRPYmplY3QgcXVhcmFudGluZWROb2RlOworICAgIGlmICghZ2V0UXVhcmFudGluZWRTY3JpcHRP
YmplY3Qobm9kZSwgcXVhcmFudGluZWROb2RlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAi
dXBkYXRlRm9jdXNlZE5vZGUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChxdWFyYW50
aW5lZE5vZGUpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9u
dGVuZDo6c2V0QXR0YWNoZWRXaW5kb3coYm9vbCBhdHRhY2hlZCkKK3sKKyAgICBTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJzZXRBdHRh
Y2hlZFdpbmRvdyIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGF0dGFjaGVkKTsKKyAg
ICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6Omluc3BlY3Rl
ZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqIGZyYW1lKQoreworICAgIFNjcmlwdE9i
amVjdCBkb21XaW5kb3c7CisgICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChmcmFt
ZS0+ZG9tV2luZG93KCksIGRvbVdpbmRvdykpCisgICAgICAgIHJldHVybjsKKworICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImlu
c3BlY3RlZFdpbmRvd0NsZWFyZWQiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChkb21X
aW5kb3cpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVu
ZDo6c2hvd1BhbmVsKGludCBwYW5lbCkKK3sKKyAgICBjb25zdCBjaGFyKiBzaG93RnVuY3Rpb25O
YW1lOworICAgIHN3aXRjaCAocGFuZWwpIHsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9s
bGVyOjpDb25zb2xlUGFuZWw6CisgICAgICAgICAgICBzaG93RnVuY3Rpb25OYW1lID0gInNob3dD
b25zb2xlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEluc3BlY3RvckNvbnRy
b2xsZXI6OkRhdGFiYXNlc1BhbmVsOgorICAgICAgICAgICAgc2hvd0Z1bmN0aW9uTmFtZSA9ICJz
aG93RGF0YWJhc2VzUGFuZWwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5z
cGVjdG9yQ29udHJvbGxlcjo6RWxlbWVudHNQYW5lbDoKKyAgICAgICAgICAgIHNob3dGdW5jdGlv
bk5hbWUgPSAic2hvd0VsZW1lbnRzUGFuZWwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6UHJvZmlsZXNQYW5lbDoKKyAgICAgICAgICAgIHNo
b3dGdW5jdGlvbk5hbWUgPSAic2hvd1Byb2ZpbGVzUGFuZWwiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQ29udHJvbGxlcjo6UmVzb3VyY2VzUGFuZWw6CisgICAg
ICAgICAgICBzaG93RnVuY3Rpb25OYW1lID0gInNob3dSZXNvdXJjZXNQYW5lbCI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JDb250cm9sbGVyOjpTY3JpcHRzUGFu
ZWw6CisgICAgICAgICAgICBzaG93RnVuY3Rpb25OYW1lID0gInNob3dTY3JpcHRzUGFuZWwiOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHNob3dGdW5jdGlvbk5hbWUgPSAwOworICAgIH0K
KworICAgIGlmIChzaG93RnVuY3Rpb25OYW1lKQorICAgICAgICBjYWxsU2ltcGxlRnVuY3Rpb24o
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsIHNob3dGdW5jdGlvbk5hbWUpOworfQorCit2
b2lkIEluc3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZUludGVyZmFjZSgpCit7CisgICAgY2FsbFNp
bXBsZUZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAicG9wdWxhdGVJbnRl
cmZhY2UiKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cmVzZXQoKQoreworICAgIGNh
bGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInJlc2V0Iik7
Cit9CisKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQordm9pZCBJbnNwZWN0b3JG
cm9udGVuZDo6ZGVidWdnZXJXYXNFbmFibGVkKCkKK3sKKyAgICBjYWxsU2ltcGxlRnVuY3Rpb24o
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJkZWJ1Z2dlcldhc0VuYWJsZWQiKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGVidWdnZXJXYXNEaXNhYmxlZCgpCit7CisgICAg
Y2FsbFNpbXBsZUZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZGVidWdn
ZXJXYXNEaXNhYmxlZCIpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwcm9maWxlcldh
c0VuYWJsZWQoKQoreworICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dl
Ykluc3BlY3RvciwgInByb2ZpbGVyV2FzRW5hYmxlZCIpOworfQorCit2b2lkIEluc3BlY3RvckZy
b250ZW5kOjpwcm9maWxlcldhc0Rpc2FibGVkKCkKK3sKKyAgICBjYWxsU2ltcGxlRnVuY3Rpb24o
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJwcm9maWxlcldhc0Rpc2FibGVkIik7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBhcnNlZFNjcmlwdFNvdXJjZShjb25zdCBKU0M6
OlNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24o
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJwYXJzZWRTY3JpcHRTb3VyY2UiKTsKKyAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNvdXJjZS5w
cm92aWRlcigpLT5hc0lEKCkpKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2Uu
cHJvdmlkZXIoKS0+dXJsKCkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KEpTQzo6VVN0
cmluZyhzb3VyY2UuZGF0YSgpLCBzb3VyY2UubGVuZ3RoKCkpKTsKKyAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChzb3VyY2UuZmlyc3RMaW5lKCkpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShjb25z
dCBKU0M6OlNvdXJjZUNvZGUmIHNvdXJjZSwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1f
c2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZSIp
OworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSk7
CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpVU3RyaW5nKHNvdXJjZS5kYXRhKCks
IHNvdXJjZS5sZW5ndGgoKSkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5m
aXJzdExpbmUoKSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXJyb3JMaW5lKTsKKyAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChlcnJvck1lc3NhZ2UpOworICAgIGZ1bmN0aW9uLmNh
bGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6YWRkUHJvZmlsZShjb25zdCBKU0M6
OkpTVmFsdWUmIHByb2ZpbGUpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1f
c2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiYWRkUHJvZmlsZSIpOworICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KHByb2ZpbGUpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6c2V0UmVjb3JkaW5nUHJvZmlsZShib29sIGlzUHJvZmlsaW5n
KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dl
Ykluc3BlY3RvciwgInNldFJlY29yZGluZ1Byb2ZpbGUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChpc1Byb2ZpbGluZyk7CisgICAgZnVuY3Rpb24uY2FsbCgpOworfQorCit2b2lkIElu
c3BlY3RvckZyb250ZW5kOjpwYXVzZWRTY3JpcHQoKQoreworICAgIGNhbGxTaW1wbGVGdW5jdGlv
bihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInBhdXNlZFNjcmlwdCIpOworfQorCit2
b2lkIEluc3BlY3RvckZyb250ZW5kOjpyZXN1bWVkU2NyaXB0KCkKK3sKKyAgICBjYWxsU2ltcGxl
RnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJyZXN1bWVkU2NyaXB0Iik7
Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKK2Jvb2wgSW5zcGVjdG9yRnJvbnRl
bmQ6OmFkZERhdGFiYXNlKGNvbnN0IEpTT05PYmplY3QmIGRiT2JqZWN0KQoreworICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImFk
ZERhdGFiYXNlIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZGJPYmplY3Quc2NyaXB0
T2JqZWN0KCkpOworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgZnVuY3Rpb24u
Y2FsbChoYWRFeGNlcHRpb24pOworICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOworfQorI2VuZGlm
CisKKyNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCitib29sIEluc3BlY3RvckZyb250ZW5kOjphZGRE
T01TdG9yYWdlKGNvbnN0IEpTT05PYmplY3QmIGRvbVN0b3JhZ2VPYmopCit7CisgICAgU2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiYWRk
RE9NU3RvcmFnZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGRvbVN0b3JhZ2VPYmou
c2NyaXB0T2JqZWN0KCkpOworICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7CisgICAgZnVu
Y3Rpb24uY2FsbChoYWRFeGNlcHRpb24pOworICAgIHJldHVybiAhaGFkRXhjZXB0aW9uOworfQor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2N2VjOWMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBA
IC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVuZF9oCisjZGVmaW5lIElu
c3BlY3RvckZyb250ZW5kX2gKKworI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKKyNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCituYW1lc3Bh
Y2UgSlNDIHsKKyAgICBjbGFzcyBKU1ZhbHVlOworICAgIGNsYXNzIFNvdXJjZUNvZGU7CisgICAg
Y2xhc3MgVVN0cmluZzsKK30KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xh
c3MgQ29uc29sZU1lc3NhZ2U7CisgICAgY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CisgICAgY2xh
c3MgTm9kZTsKKyAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CisKKyAgICBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZCB7CisgICAgcHVibGljOgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRT
dGF0ZSosIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpOworICAgICAgICB+SW5zcGVjdG9yRnJv
bnRlbmQoKTsKKyAgICAgICAgSlNPTk9iamVjdCBuZXdKU09OT2JqZWN0KCk7CisKKyAgICAgICAg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKGNvbnN0IEpTT05PYmplY3QmIG1lc3NhZ2VPYmosIGNv
bnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxTY3JpcHRWYWx1
ZT4gd3JhcHBlZEFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICAgICAgCisg
ICAgICAgIGJvb2wgYWRkUmVzb3VyY2UobG9uZyBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEpTT05P
YmplY3QmIHJlc291cmNlT2JqKTsKKyAgICAgICAgYm9vbCB1cGRhdGVSZXNvdXJjZShsb25nIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgSlNPTk9iamVjdCYgcmVzb3VyY2VPYmopOworICAgICAgICB2
b2lkIHJlbW92ZVJlc291cmNlKGxvbmcgbG9uZyBpZGVudGlmaWVyKTsKKworICAgICAgICB2b2lk
IHVwZGF0ZUZvY3VzZWROb2RlKE5vZGUqIG5vZGUpOworICAgICAgICB2b2lkIHNldEF0dGFjaGVk
V2luZG93KGJvb2wgYXR0YWNoZWQpOworICAgICAgICB2b2lkIGluc3BlY3RlZFdpbmRvd1Njcmlw
dE9iamVjdENsZWFyZWQoRnJhbWUqIGZyYW1lKTsKKyAgICAgICAgdm9pZCBzaG93UGFuZWwoaW50
IHBhbmVsKTsKKyAgICAgICAgdm9pZCBwb3B1bGF0ZUludGVyZmFjZSgpOworICAgICAgICB2b2lk
IHJlc2V0KCk7CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICAgICAgdm9p
ZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKTsKKyAgICAgICAgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVk
KCk7CisgICAgICAgIHZvaWQgcHJvZmlsZXJXYXNFbmFibGVkKCk7CisgICAgICAgIHZvaWQgcHJv
ZmlsZXJXYXNEaXNhYmxlZCgpOworICAgICAgICB2b2lkIHBhcnNlZFNjcmlwdFNvdXJjZShjb25z
dCBKU0M6OlNvdXJjZUNvZGUmKTsKKyAgICAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU2NyaXB0U291
cmNlKGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdm9pZCBhZGRQcm9maWxlKGNvbnN0IEpTQzo6
SlNWYWx1ZSYgcHJvZmlsZSk7CisgICAgICAgIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShib29s
IGlzUHJvZmlsaW5nKTsKKyAgICAgICAgdm9pZCBwYXVzZWRTY3JpcHQoKTsKKyAgICAgICAgdm9p
ZCByZXN1bWVkU2NyaXB0KCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShEQVRBQkFTRSkKKyAgICAg
ICAgYm9vbCBhZGREYXRhYmFzZShjb25zdCBKU09OT2JqZWN0JiBkYk9iaik7CisjZW5kaWYKKyAg
ICAgICAgCisjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQorICAgICAgICBib29sIGFkZERPTVN0b3Jh
Z2UoY29uc3QgSlNPTk9iamVjdCYgZG9tU3RvcmFnZU9iaik7CisjZW5kaWYKKworICAgIHByaXZh
dGU6CisgICAgICAgIFNjcmlwdFN0YXRlKiBtX3NjcmlwdFN0YXRlOworICAgICAgICBTY3JpcHRP
YmplY3QgbV93ZWJJbnNwZWN0b3I7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRnJvbnRlbmRfaCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlLmNwcAppbmRleCA0MzgwNTgzLi42MTg0MTE5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCkBAIC0zNSwxMSArMzUsMTAgQEAKICNpbmNs
dWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdEZ1bmN0aW9uQ2FsbC5oIgotI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTQsMTMgKzExMywxMSBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUhlYWRl
cnNPYmplY3QoSlNPTk9iamVjdCogb2JqZWN0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZQog
ICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6Y3JlYXRlU2NyaXB0T2JqZWN0KFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3Ip
Cit2b2lkIEluc3BlY3RvclJlc291cmNlOjpjcmVhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJv
bnRlbmQqIGZyb250ZW5kKQogewogICAgIGlmICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKSB7Ci0g
ICAgICAgIGJvb2wgaGFkRXhjZXB0aW9uID0gZmFsc2U7Ci0KLSAgICAgICAgSlNPTk9iamVjdCBq
c29uT2JqZWN0ID0gSlNPTk9iamVjdDo6Y3JlYXRlTmV3KHNjcmlwdFN0YXRlKTsKLSAgICAgICAg
SlNPTk9iamVjdCByZXF1ZXN0SGVhZGVycyA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRT
dGF0ZSk7CisgICAgICAgIEpTT05PYmplY3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5uZXdKU09O
T2JqZWN0KCk7CisgICAgICAgIEpTT05PYmplY3QgcmVxdWVzdEhlYWRlcnMgPSBmcm9udGVuZC0+
bmV3SlNPTk9iamVjdCgpOwogICAgICAgICBwb3B1bGF0ZUhlYWRlcnNPYmplY3QoJnJlcXVlc3RI
ZWFkZXJzLCBtX3JlcXVlc3RIZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgi
cmVxdWVzdEhlYWRlcnMiLCByZXF1ZXN0SGVhZGVycyk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0
KCJyZXF1ZXN0VVJMIiwgcmVxdWVzdFVSTCgpKTsKQEAgLTEyOSwyMSArMTI2LDE2IEBAIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2U6OmNyZWF0ZVNjcmlwdE9iamVjdChTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIGNvbnN0IFNjcmlwCiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJsYXN0UGF0aENvbXBv
bmVudCIsIG1fcmVxdWVzdFVSTC5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICAgICAganNvbk9i
amVjdC5zZXQoImlzTWFpblJlc291cmNlIiwgbV9pc01haW5SZXNvdXJjZSk7CiAgICAgICAgIGpz
b25PYmplY3Quc2V0KCJjYWNoZWQiLCBtX2NhY2hlZCk7Ci0gICAgICAgIAotICAgICAgICBTY3Jp
cHRGdW5jdGlvbkNhbGwgYWRkUmVzb3VyY2Uoc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgImFk
ZFJlc291cmNlIik7Ci0gICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KG1faWRlbnRp
Zmllcik7Ci0gICAgICAgIGFkZFJlc291cmNlLmFwcGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2Ny
aXB0T2JqZWN0KCkpOwotICAgICAgICBhZGRSZXNvdXJjZS5jYWxsKGhhZEV4Y2VwdGlvbik7Ci0g
ICAgICAgIGlmIChoYWRFeGNlcHRpb24pCisgICAgICAgIGlmICghZnJvbnRlbmQtPmFkZFJlc291
cmNlKG1faWRlbnRpZmllciwganNvbk9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgbV9zY3JpcHRPYmplY3RDcmVhdGVkID0gdHJ1ZTsKICAgICAgICAgbV9jaGFuZ2VzLmNs
ZWFyKFJlcXVlc3RDaGFuZ2UpOwogICAgIH0KLSAgICB1cGRhdGVTY3JpcHRPYmplY3Qoc2NyaXB0
U3RhdGUsIHdlYkluc3BlY3Rvcik7CisgICAgdXBkYXRlU2NyaXB0T2JqZWN0KGZyb250ZW5kKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCit2b2lk
IEluc3BlY3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kKQogewogICAgIGlmICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNTEsMTUgKzE0MywxMyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlOjp1cGRh
dGVTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBTY3JpcAogICAg
IGlmIChtX2NoYW5nZXMuaGFzQ2hhbmdlKE5vQ2hhbmdlKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYm9vbCBoYWRFeGNlcHRpb24gPSBmYWxzZTsKLQotICAgIEpTT05PYmplY3QganNvbk9iamVj
dCA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7CisgICAgSlNPTk9iamVjdCBq
c29uT2JqZWN0ID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3QoKTsKICAgICBpZiAobV9jaGFuZ2Vz
Lmhhc0NoYW5nZShSZXF1ZXN0Q2hhbmdlKSkgewogICAgICAgICBqc29uT2JqZWN0LnNldCgidXJs
IiwgcmVxdWVzdFVSTCgpKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRvbWFpbiIsIG1fcmVx
dWVzdFVSTC5ob3N0KCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicGF0aCIsIG1fcmVxdWVz
dFVSTC5wYXRoKCkpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgibGFzdFBhdGhDb21wb25lbnQi
LCBtX3JlcXVlc3RVUkwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgICAgIEpTT05PYmplY3Qg
cmVxdWVzdEhlYWRlcnMgPSBKU09OT2JqZWN0OjpjcmVhdGVOZXcoc2NyaXB0U3RhdGUpOworICAg
ICAgICBKU09OT2JqZWN0IHJlcXVlc3RIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0pTT05PYmplY3Qo
KTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXF1ZXN0SGVhZGVycywgbV9yZXF1
ZXN0SGVhZGVyRmllbGRzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInJlcXVlc3RIZWFkZXJz
IiwgcmVxdWVzdEhlYWRlcnMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgibWFpblJlc291cmNl
IiwgbV9pc01haW5SZXNvdXJjZSk7CkBAIC0xNzIsNyArMTYyLDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZTo6dXBkYXRlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29u
c3QgU2NyaXAKICAgICAgICAganNvbk9iamVjdC5zZXQoImV4cGVjdGVkQ29udGVudExlbmd0aCIs
IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoInN0YXR1
c0NvZGUiLCBtX3Jlc3BvbnNlU3RhdHVzQ29kZSk7CiAgICAgICAgIGpzb25PYmplY3Quc2V0KCJz
dWdnZXN0ZWRGaWxlbmFtZSIsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICBKU09OT2Jq
ZWN0IHJlc3BvbnNlSGVhZGVycyA9IEpTT05PYmplY3Q6OmNyZWF0ZU5ldyhzY3JpcHRTdGF0ZSk7
CisgICAgICAgIEpTT05PYmplY3QgcmVzcG9uc2VIZWFkZXJzID0gZnJvbnRlbmQtPm5ld0pTT05P
YmplY3QoKTsKICAgICAgICAgcG9wdWxhdGVIZWFkZXJzT2JqZWN0KCZyZXNwb25zZUhlYWRlcnMs
IG1fcmVzcG9uc2VIZWFkZXJGaWVsZHMpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgicmVzcG9u
c2VIZWFkZXJzIiwgcmVzcG9uc2VIZWFkZXJzKTsKICAgICAgICAganNvbk9iamVjdC5zZXQoImRp
ZFJlc3BvbnNlQ2hhbmdlIiwgdHJ1ZSk7CkBAIC0yMDMsMTggKzE5MywxMiBAQCB2b2lkIEluc3Bl
Y3RvclJlc291cmNlOjp1cGRhdGVTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
LCBjb25zdCBTY3JpcAogICAgICAgICAgICAganNvbk9iamVjdC5zZXQoImVuZFRpbWUiLCBtX2Vu
ZFRpbWUpOwogICAgICAgICBqc29uT2JqZWN0LnNldCgiZGlkVGltaW5nQ2hhbmdlIiwgdHJ1ZSk7
CiAgICAgfQotICAgIAotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCB1cGRhdGVSZXNvdXJjZShzY3Jp
cHRTdGF0ZSwgd2ViSW5zcGVjdG9yLCAidXBkYXRlUmVzb3VyY2UiKTsKLSAgICB1cGRhdGVSZXNv
dXJjZS5hcHBlbmRBcmd1bWVudChtX2lkZW50aWZpZXIpOwotICAgIHVwZGF0ZVJlc291cmNlLmFw
cGVuZEFyZ3VtZW50KGpzb25PYmplY3Quc2NyaXB0T2JqZWN0KCkpOwotICAgIHVwZGF0ZVJlc291
cmNlLmNhbGwoaGFkRXhjZXB0aW9uKTsKLSAgICBpZiAoaGFkRXhjZXB0aW9uKQorICAgIGlmICgh
ZnJvbnRlbmQtPnVwZGF0ZVJlc291cmNlKG1faWRlbnRpZmllciwganNvbk9iamVjdCkpCiAgICAg
ICAgIHJldHVybjsKLQogICAgIG1fY2hhbmdlcy5jbGVhckFsbCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvclJlc291cmNlOjpyZWxlYXNlU2NyaXB0T2JqZWN0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IsIGJvb2wgY2FsbFJlbW92ZVJlc291
cmNlKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6cmVsZWFzZVNjcmlwdE9iamVjdChJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQsIGJvb2wgY2FsbFJlbW92ZVJlc291cmNlKQogewogICAgIGlm
ICghbV9zY3JpcHRPYmplY3RDcmVhdGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMjUsOSArMjA5
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6cmVsZWFzZVNjcmlwdE9iamVjdChTY3JpcHRT
dGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IFNjcmkKICAgICBpZiAoIWNhbGxSZW1vdmVSZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIHJlbW92ZVJlc291
cmNlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJyZW1vdmVSZXNvdXJjZSIpOwotICAgIHJl
bW92ZVJlc291cmNlLmFwcGVuZEFyZ3VtZW50KG1faWRlbnRpZmllcik7Ci0gICAgcmVtb3ZlUmVz
b3VyY2UuY2FsbCgpOworICAgIGZyb250ZW5kLT5yZW1vdmVSZXNvdXJjZShtX2lkZW50aWZpZXIp
OwogfQogCiBJbnNwZWN0b3JSZXNvdXJjZTo6VHlwZSBJbnNwZWN0b3JSZXNvdXJjZTo6dHlwZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuaAppbmRleCA0ODY3MGE0Li44
MzgwYThmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmgKQEAgLTQ3LDYgKzQ3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiAg
ICAgY2xhc3MgRG9jdW1lbnRMb2FkZXI7CisgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiAg
ICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIApAQCAtNzYsOSAr
NzcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgfkluc3BlY3RvclJlc291cmNl
KCk7CiAKLSAgICAgICAgdm9pZCBjcmVhdGVTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCBjb25z
dCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rvcik7Ci0gICAgICAgIHZvaWQgdXBkYXRlU2NyaXB0
T2JqZWN0KFNjcmlwdFN0YXRlKiwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOwot
ICAgICAgICB2b2lkIHJlbGVhc2VTY3JpcHRPYmplY3QoU2NyaXB0U3RhdGUqLCBjb25zdCBTY3Jp
cHRPYmplY3QmIHdlYkluc3BlY3RvciwgYm9vbCBjYWxsUmVtb3ZlUmVzb3VyY2UpOworICAgICAg
ICB2b2lkIGNyZWF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpOwor
ICAgICAgICB2b2lkIHVwZGF0ZVNjcmlwdE9iamVjdChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpOworICAgICAgICB2b2lkIHJlbGVhc2VTY3JpcHRPYmplY3QoSW5zcGVjdG9yRnJvbnRlbmQq
IGZyb250ZW5kLCBib29sIGNhbGxSZW1vdmVSZXNvdXJjZSk7CiAKICAgICAgICAgdm9pZCB1cGRh
dGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2b2lkIHVwZGF0ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
</data>
<flag name="review"
          id="15383"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>