<?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>103867</bug_id>
          
          <creation_ts>2012-12-03 01:30:42 -0800</creation_ts>
          <short_desc>[Resource Timing] Record redirectStart &amp; redirectEnd time and expose in resource timing entries</short_desc>
          <delta_ts>2014-02-05 11:07:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85025</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="pdeng6">pan.deng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>japhet</cc>
    
    <cc>simonjam</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781227</commentid>
    <comment_count>0</comment_count>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2012-12-03 01:30:42 -0800</bug_when>
    <thetext>redirectStart &amp; redirectEnd time are fields in resource timing entry,
they are needed to be recorded if there is redirect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781414</commentid>
    <comment_count>1</comment_count>
      <attachid>177246</attachid>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2012-12-03 06:56:58 -0800</bug_when>
    <thetext>Created attachment 177246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781789</commentid>
    <comment_count>2</comment_count>
      <attachid>177246</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-12-03 12:55:47 -0800</bug_when>
    <thetext>Comment on attachment 177246
Patch

I don&apos;t really like leaving these values as member variables on ResourceLoader. I&apos;d feel much better if they were wrapped up as a struct.

Also, how are you planning on accessing this data? Since there are no callers in this patch, it&apos;s hard for me to get a complete perspective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796939</commentid>
    <comment_count>3</comment_count>
      <attachid>180661</attachid>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2012-12-24 03:55:20 -0800</bug_when>
    <thetext>Created attachment 180661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796940</commentid>
    <comment_count>4</comment_count>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2012-12-24 04:02:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 177246 [details])
&gt; I don&apos;t really like leaving these values as member variables on ResourceLoader. I&apos;d feel much better if they were wrapped up as a struct.
&gt; 
&gt; Also, how are you planning on accessing this data? Since there are no callers in this patch, it&apos;s hard for me to get a complete perspective.

I think SubResourceLoader is a good place to catch Redirect timing info, and it loads MainResource since recent refactoring(#49246).
Most resource timing information exposed from CachedResource, is it possible we store redirect in CachedResource?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803376</commentid>
    <comment_count>5</comment_count>
      <attachid>180661</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2013-01-09 09:13:32 -0800</bug_when>
    <thetext>Comment on attachment 180661
Patch

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

&gt; Source/WebCore/loader/cache/CachedResource.h:265
&gt; +#if ENABLE(RESOURCE_TIMING)
&gt; +    double redirectStartTime() const { return m_redirectStartTime; }
&gt; +    double redirectEndTime() const { return m_redirectEndTime; }
&gt; +    void addRedirect(double);
&gt; +#endif
&gt; +

How will this be accessed, and what is the correct behavior if the CachedResource is reused?

This patch may be ok, but I can&apos;t be sure without clearly understanding whether it&apos;s correct to reuse this data in the case of a cache hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803939</commentid>
    <comment_count>6</comment_count>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2013-01-09 19:01:37 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 180661 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180661&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResource.h:265
&gt; &gt; +#if ENABLE(RESOURCE_TIMING)
&gt; &gt; +    double redirectStartTime() const { return m_redirectStartTime; }
&gt; &gt; +    double redirectEndTime() const { return m_redirectEndTime; }
&gt; &gt; +    void addRedirect(double);
&gt; &gt; +#endif
&gt; &gt; +
&gt; 
&gt; How will this be accessed, and what is the correct behavior if the CachedResource is reused?
&gt; 
&gt; This patch may be ok, but I can&apos;t be sure without clearly understanding whether it&apos;s correct to reuse this data in the case of a cache hit.

Thanks, it will be accessed in CachedResourceLoader::loadDone(CachedResource* resource), same way as resource-&gt;resourceRequest(), resource-&gt;response() and resource-&gt;loadFinishTime(). see https://bugs.webkit.org/show_bug.cgi?id=103777, and landed patch https://bugs.webkit.org/attachment.cgi?id=177328&amp;action=review.

Timing information will be reported only once when resource is loaded, and not reported when hit from memory cache, it is also similar to response() of CachedResource(http://www.w3.org/TR/2012/CR-resource-timing-20120522/#processing-model)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806303</commentid>
    <comment_count>7</comment_count>
      <attachid>182559</attachid>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2013-01-14 06:03:35 -0800</bug_when>
    <thetext>Created attachment 182559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806309</commentid>
    <comment_count>8</comment_count>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2013-01-14 06:11:51 -0800</bug_when>
    <thetext>I intent to track changes under loader by this bug at first. :)

Now patch 182559 is about record redirect timing and expose, redirectStart should be the same as initiation time(startTime) when there is redirect in same-origin or timing-allow-origin, otherwise 0. so only last redirect time is recorded in CachedResource.

@Nate, could you please help review the loader part?
@Tony and @James, could you please help review resource timing and test cases? I would like to know your comments before upstream the cases.
thanks.. Pan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807828</commentid>
    <comment_count>9</comment_count>
      <attachid>182559</attachid>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2013-01-15 17:01:08 -0800</bug_when>
    <thetext>Comment on attachment 182559
Patch

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

&gt; Source/WebCore/loader/SubresourceLoader.cpp:149
&gt; +        m_resource-&gt;addRedirect();

We also need to check if this is a cross-origin redirect. If it is, then we must reset everything, including the start value stored in m_initiatorMap. See processing model step 19a.

&gt; Source/WebCore/loader/cache/CachedResource.cpp:878
&gt; +    m_lastRedirectReportTime = monotonicallyIncreasingTime();

This is supposed to be the equivalent to responseEnd, which is when the network stack receives the last byte. You should pull that value from the redirected response instead of using the current time.

&gt; Source/WebCore/loader/cache/CachedResource.h:261
&gt; +    double lastRedirectReportTime() const { return m_lastRedirectReportTime; }

Have you considered storing this in m_initiatorMap instead? It seems nice to keep all of the Resource Timing info together. Perhaps we should rename m_initiatorMap to better reflect that it&apos;s storing all of the Resource Timing info.

&gt; Source/WebCore/page/PerformanceResourceTiming.cpp:120
&gt; +    if (m_lastRedirectReportTime &amp;&amp; !m_shouldReportDetails)

I&apos;m going to go back on what I said in the last code review. Let&apos;s move passesTimingAllowOrigin() back to Performance.cpp and pass in m_shouldReportDetails as a bool. Then, we should just pass in the correct values for startTime and redirectEnd in the constructor. I think it&apos;ll be easier to read if all of that logic is in one place instead of sprinkled throughout these functions.

&gt; Source/WebCore/page/PerformanceResourceTiming.cpp:134
&gt; +    return (PerformanceEntry::startTime());

This shouldn&apos;t be inside (). Not sure why the old code was that way too.

&gt; Source/WebCore/page/PerformanceResourceTiming.h:52
&gt; +    static PassRefPtr&lt;PerformanceResourceTiming&gt; create(const AtomicString&amp; initiatorType, const ResourceRequest&amp; request, const ResourceResponse&amp; response, double initiationTime, double lastRedirectReportTime, double finishTime, Document* requestingDocument)

It&apos;s really confusing that sometimes lastRedirectReportTime comes before finishTime in the args list and sometimes it&apos;s after it. Please pick one and be consistent in all the functions.

&gt; LayoutTests/http/tests/w3c/webperf/submission/Intel/resource-timing/test_resource_timing_cross_origin_redirect_with_timing_allow_origin.html:25
&gt; +                test_noless_than(entry.redirectEnd, entry.redirectStart, &quot;redirectEnd should be no less than redirectStart in timing allowed cross-origin redirect!&quot;);

Isn&apos;t this the same as test_greater_or_equals? Why do we even have test_noless_than?

&gt; LayoutTests/http/tests/w3c/webperf/submission/Intel/resource-timing/test_resource_timing_same_origin_redirect.html:15
&gt; +            setup({explicit_done: true});

I don&apos;t think you need this if everything is tested during the load event. Same for the other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808039</commentid>
    <comment_count>10</comment_count>
      <attachid>182559</attachid>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2013-01-15 21:34:29 -0800</bug_when>
    <thetext>Comment on attachment 182559
Patch

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

&gt;&gt; Source/WebCore/loader/SubresourceLoader.cpp:149
&gt;&gt; +        m_resource-&gt;addRedirect();
&gt; 
&gt; We also need to check if this is a cross-origin redirect. If it is, then we must reset everything, including the start value stored in m_initiatorMap. See processing model step 19a.

thanks for your remind, it is really confused, let&apos;s sync understanding first of all.

Assume scenario, doc D req R1 -&gt; R2 -&gt; R3 -&gt; R4. ( &quot;-&gt;&quot; means redirect, R4 is the final resource)
case 1: D, R1, R2, R3 and R4 are all from same origin.
case 2: although Ri and its adjacent are not the same origin, Ri allow its prior &apos;timing&apos;, or allowed timing by its posterior.
case 3: others

In case 1 and 2, redirectStart should be the initiate time of R1, redirectEnd should be last byte R3&apos;s redirect response. startTime should be initiate time of R1, fetchStart should be R4&apos;s request time.
In case 3, redirectStart should be 0, redirectEnd should be 0. startTime should be , startTime should be R4&apos;s request time, fetchStart should be R4&apos;s request time.
while for other fields, domainLookupStart, domainLookupEnd, connectStart, connectEnd, secureConnectionStart, requestStart and responseStart, should be reported if R4 and D same origin or R4 allow D timing. otherwise 0.

if above right, I would like to store redirect response chain(in CachedResource? I&apos;m not sure how to store in m_initiatorMap of CachedResourceLoader) then feed it to  addResourceTiming(...). in addResourceTiming, pass in the correct values for startTime and redirectEnd in the constructor.

&gt;&gt; LayoutTests/http/tests/w3c/webperf/submission/Intel/resource-timing/test_resource_timing_same_origin_redirect.html:15
&gt;&gt; +            setup({explicit_done: true});
&gt; 
&gt; I don&apos;t think you need this if everything is tested during the load event. Same for the other tests.

seems it doesn&apos;t work well if I remove this and  the latter done().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808878</commentid>
    <comment_count>11</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2013-01-16 17:25:30 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; case 2: although Ri and its adjacent are not the same origin, Ri allow its prior &apos;timing&apos;, or allowed timing by its posterior.

We don&apos;t consider Timing-Allow-Origin during redirects. Its purpose is to allow a specific main document to view timing data for a specific subresource, not to share timing data across the redirect chain.

&gt; if above right, I would like to store redirect response chain(in CachedResource? I&apos;m not sure how to store in m_initiatorMap of CachedResourceLoader) then feed it to  addResourceTiming(...). in addResourceTiming, pass in the correct values for startTime and redirectEnd in the constructor.

I don&apos;t think you need all that. Just reset the initiationTime when there&apos;s a cross-origin redirect.

&gt; seems it doesn&apos;t work well if I remove this and  the latter done().

Not sure then. A bunch of my tests don&apos;t use it. Not sure what the difference is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809006</commentid>
    <comment_count>12</comment_count>
    <who name="pdeng6">pan.deng</who>
    <bug_when>2013-01-16 19:54:29 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; case 2: although Ri and its adjacent are not the same origin, Ri allow its prior &apos;timing&apos;, or allowed timing by its posterior.
&gt; 
&gt; We don&apos;t consider Timing-Allow-Origin during redirects. Its purpose is to allow a specific main document to view timing data for a specific subresource, not to share timing data across the redirect chain.
&gt; 
&gt; &gt; if above right, I would like to store redirect response chain(in CachedResource? I&apos;m not sure how to store in m_initiatorMap of CachedResourceLoader) then feed it to  addResourceTiming(...). in addResourceTiming, pass in the correct values for startTime and redirectEnd in the constructor.
&gt; 
&gt; I don&apos;t think you need all that. Just reset the initiationTime when there&apos;s a cross-origin redirect.

I don&apos;t quite understand this, 

in section4.3, startTime should be initiationTime(redirectStart) when if all the redirects or equivalent are from the same origin as the current document or the Timing-Allow-Origin HTTP response header rules are met.
now, as my understand, my case2 in comment #10 should be: 
case 2: although Ri and Doc D are not the same origin, response of Ri allow-timing by Doc D&apos;s origin.
then startTime should be initiationTime(first) or final resource fetch time(last), then why we reset the initiationTime? startTime in processing model never changed after 3.2.

what is more puzzled me is in processing model 3.19a, redirectStart is reset according to &quot;current resource and the resource that is redirected to&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809570</commentid>
    <comment_count>13</comment_count>
    <who name="James Simonsen">simonjam</who>
    <bug_when>2013-01-17 11:45:54 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; in section4.3, startTime should be initiationTime(redirectStart) when if all the redirects or equivalent are from the same origin as the current document or the Timing-Allow-Origin HTTP response header rules are met.
&gt; now, as my understand, my case2 in comment #10 should be: 
&gt; case 2: although Ri and Doc D are not the same origin, response of Ri allow-timing by Doc D&apos;s origin.
&gt; then startTime should be initiationTime(first) or final resource fetch time(last), then why we reset the initiationTime? startTime in processing model never changed after 3.2.
&gt; 
&gt; what is more puzzled me is in processing model 3.19a, redirectStart is reset according to &quot;current resource and the resource that is redirected to&quot;

I believe the processing model is correct. We should probably bring this up on the public-webperf mailing list though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976917</commentid>
    <comment_count>14</comment_count>
      <attachid>182559</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 11:07:18 -0800</bug_when>
    <thetext>Comment on attachment 182559
Patch

Clearing review flag on patches from before 2014. If this patch is still relevant, please reset the r? flag.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177246</attachid>
            <date>2012-12-03 06:56:58 -0800</date>
            <delta_ts>2012-12-24 03:55:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103867-20121203230006.patch</filename>
            <type>text/plain</type>
            <size>19048</size>
            <attacher name="pdeng6">pan.deng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgzZDk2YjQ3YjUzMzlh
MjliNDJlZWNhMzNmM2Y1ZDIwM2UzY2E3ZC4uOGY1ZGJkNzQ3Y2YzOWEzMTg4ODJiZTBhZDYyN2M2
YzJlMGM2NjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTAzICBQYW4g
RGVuZyAgPHBhbi5kZW5nQGludGVsLmNvbT4KKworICAgICAgICBbUmVzb3VyY2UgVGltaW5nXVJl
ZGlyZWN0IHN0YXJ0L2VuZCB0aW1lIG5lZWQgdG8gYmUgcmVjb3JkZWQgZm9yIFczQyBSZXNvdXJj
ZSB0aW1pbmcgQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzODY3LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVjb3JkcyByZWRpcmVjdCBzdGFydC9lbmQgdGltZSBpbiByZXNv
dXJjZSBsb2FkZXIsIHVzZWQKKyAgICAgICAgdG8gY3JlYXRlIHJlc291cmNlIHRpbWluZyBlbnRy
aWVzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24v
SW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9y
ZWRpcmVjdC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1p
c3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29y
aWdpbl9yZWRpcmVjdF93aXRoX3RpbWluZ19hbGxvd19vcmlnaW4uaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWlu
Zy90ZXN0X3Jlc291cmNlX3RpbWluZ19zYW1lX29yaWdpbl9yZWRpcmVjdC5odG1sCisKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAoUmVzb3VyY2VMb2FkZXIpOgorCiAyMDEyLTEyLTAzICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTM2Mzc3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggZTQ5OWQ0MmM1YmNhNTdkZjE3M2M2ZDcyZGI4MTFjNDU0MTIwMGI5OC4uNDc3Y2RlNDIw
YTQ4ZWE3YjFmOTQyZGJlMTg5MjE0ZjU3NDViNGRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAgICAgICAgICAgKEMpIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5j
b20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs2MCwxMCBAQCBQYXNz
UmVmUHRyPFJlc291cmNlQnVmZmVyPiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkKIFJl
c291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fZG9jdW1lbnRM
b2FkZXIoZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpKQorI2lmIEVOQUJM
RShSRVNPVVJDRV9USU1JTkcpCisgICAgLCBtX3JlZGlyZWN0U3RhcnQoMC4wKQorICAgICwgbV9y
ZWRpcmVjdEVuZCgwLjApCisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX1RJTUlORykKICAgICAs
IG1faWRlbnRpZmllcigwKQogICAgICwgbV9yZWFjaGVkVGVybWluYWxTdGF0ZShmYWxzZSkKICAg
ICAsIG1fY2FsbGVkV2lsbENhbmNlbChmYWxzZSkKQEAgLTI0OSw2ICsyNTQsMTMgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXMKICNlbHNlCiAgICAgICAgIHJlc291cmNlTG9hZFNjaGVkdWxlcigp
LT5jcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQodGhpcywgcmVxdWVzdC51cmwoKSk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQorICAgICAgICBpZiAocmVkaXJlY3RSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkgeworICAgICAgICAgICAgaWYgKCFtX3JlZGlyZWN0
U3RhcnQpCisgICAgICAgICAgICAgICAgbV9yZWRpcmVjdFN0YXJ0ID0gcmVkaXJlY3RSZXNwb25z
ZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFRpbWU7CisgICAgICAgICAgICBtX3JlZGly
ZWN0RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgICAgIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQogICAgIH0KICAgICBtX3JlcXVlc3QgPSByZXF1
ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzYTM0MjFj
MDhiOTcwMDc2NWRlMDY0ZTBhOTY5MTkzZDY5MWJkMWVlLi4zOTU2ZjljNmFkMzBiMGY0MTVkODdj
YjhjMGYzYjE4MDJlZjAwMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTc0LDYgKzE3NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEZyYW1lPiBt
X2ZyYW1lOwogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsKICAg
ICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlO
RykKKyAgICBkb3VibGUgbV9yZWRpcmVjdFN0YXJ0OworICAgIGRvdWJsZSBtX3JlZGlyZWN0RW5k
OyAKKyNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQogICAgIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGY1ZWRhNTJjYzVhOGZhNDBjMDNlY2E1OGJjZDNkZTMzYmQ5MTFlOGYuLjhmN2Y0NTA0Y2Yz
MDc0OWQ1MTUyMzk1NTVlMmIxMzQ2NjlkYjMzNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0xMi0wMyAgUGFuIERlbmcgIDxwYW4uZGVuZ0BpbnRlbC5jb20+CisKKyAgICAgICAgW1Jlc291
cmNlIFRpbWluZ11XM0Mgc3R5bGUgdGVzdCBjYXNlcyBmb3IgUmVzb3VyY2UgVGltaW5nIHJlZGly
ZWN0U3RhcnQgcmVkaXJlY3RFbmQgZmllbGQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4NjcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgY2FzZXMgdGVzdCByZWRpcmVjdFN0YXJ0IGFuZCBy
ZWRpcmVjdEVuZCBpbiBzY2VuYXJpbyBvZiBjcm9zcy1vcmlnaW4sIHNhbWUtb3JpZ2luIGFuZCB0
aW1pbmctYWxsb3dlZCBjcm9zcy1vcmlnaW4uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3czYy93
ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGlt
aW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcv
dGVzdF9yZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3JpZ2luX3JlZGlyZWN0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJj
ZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3JpZ2luX3JlZGlyZWN0X3dpdGhf
dGltaW5nX2FsbG93X29yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9y
ZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3JpZ2luX3JlZGlyZWN0X3dpdGhfdGltaW5nX2FsbG93X29y
aWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1p
c3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX3NhbWVfb3Jp
Z2luX3JlZGlyZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNl
X3RpbWluZ19zYW1lX29yaWdpbl9yZWRpcmVjdC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wMyAg
SnVzc2kgS3Vra29uZW4gIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiAKICAgICAgICAgW0VG
TF0gR2FyZGVuaW5nLCBtYXJrIHRlc3RzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rl
c3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3Vy
Y2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FmY2JiNTg1M2FkMjkwZjg2YjRmODcxZTQyZDE2Mjc2Nzlh
N2E4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBl
cmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdf
Y3Jvc3Nfb3JpZ2luX3JlZGlyZWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitEZXNj
cmlwdGlvbg0KKw0KK1RoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHZhbHVlcyBpbiByZXNvdXJjZSB0
aW1pbmcgZm9yIGEgY3Jvc3Mtb3JpZ2luIHNlcnZlciBzaWRlIHJlZGlyZWN0Lg0KKw0KKw0KKw0K
K1BBU1MgU3RhcnRpbmcgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgaXMgY29ycmVjdCAoMTI3
LjAuMC4xOjgwMDApIA0KK1BBU1MgcmVkaXJlY3RTdGFydCBzaG91bGQgYmUgMCBpbiBjcm9zcy1v
cmlnaW4gcmVkaXJlY3QhIA0KK1BBU1MgcmVkaXJlY3RFbmQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mt
b3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIGRvbWFpbkxvb2t1cFN0YXJ0IHNob3VsZCBiZSAwIGlu
IGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyBkb21haW5Mb29rdXBFbmQgc2hvdWxkIGJl
IDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIGNvbm5lY3RTdGFydCBzaG91bGQg
YmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIA0KK1BBU1MgY29ubmVjdEVuZCBzaG91bGQg
YmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIA0KK1BBU1MgcmVxdWVzdFN0YXJ0IHNob3Vs
ZCBiZSAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyByZXNwb25zZVN0YXJ0IHNo
b3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyBzZWN1cmVDb25uZWN0
aW9uU3RhcnQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIGZl
dGNoU3RhcnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVj
dCEgDQorUEFTUyByZXNwb25zZUVuZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAgaW4gY3Jvc3Mt
b3JpZ2luIHJlZGlyZWN0ISANCisNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3Vy
Y2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jl
c291cmNlX3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjhk
ZWZlYzk3OWI1YjA1ODM4MDA0NDY1ZmJmZmUwZDJmMzkwYjgxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291
cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3QuaHRt
bApAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgSFRNTD4NCis8aHRtbD4NCisgICAgPGhlYWQ+
DQorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4NCisgICAgICAgIDx0aXRsZT5yZXNv
dXJjZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIGNyb3NzLW9yaWdpbiByZWRpcmVjdDwvdGl0bGU+
DQorICAgICAgICA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IkludGVsIiBocmVmPSJodHRwOi8v
d3d3LmludGVsLmNvbS8iIC8+DQorICAgICAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL3Jlc291cmNlLXRpbWluZy8jcGVyZm9ybWFuY2VyZXNvdXJjZXRpbWlu
ZyIvPg0KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii93M2MvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4NCisgICAgICAgIDxzY3JpcHQgc3JjPSIvdzNjL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy93ZWJw
ZXJmL3Jlc291cmNlcy93ZWJwZXJmdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii93M2Mvd2VicGVyZi9yZXNvdXJjZXMvd2VicGVyZnRlc3RoYXJuZXNzZXh0
ZW5zaW9uLmpzIj48L3NjcmlwdD4NCisNCisgICAgICAgIDxzY3JpcHQ+DQorICAgICAgICAgICAN
CisgICAgICAgICAgICBzZXR1cCh7ZXhwbGljaXRfZG9uZTogdHJ1ZX0pOw0KKyAgICAgICAgICAg
IHZhciBwYWdlT3JpZ2luID0gIjEyNy4wLjAuMTo4MDAwIjsNCisgICAgICAgICAgICB2YXIgY3Jv
c3NPcmlnaW4gPSAibG9jYWxob3N0OjgwMDAiOw0KKyAgICAgICAgICAgIGZ1bmN0aW9uIG9ubG9h
ZF90ZXN0KCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0g
bmV3IFBlcmZvcm1hbmNlQ29udGV4dChwZXJmb3JtYW5jZSk7DQorICAgICAgICAgICAgICAgIHZh
ciBlbnRyeSA9IGNvbnRleHQuZ2V0RW50cmllc0J5TmFtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZnJhbWVDb250ZXh0Iikuc3JjLCAicmVzb3VyY2UiKVswXTsNCisNCisgICAgICAgICAgICAg
ICAgdGVzdF9lcXVhbHMoZW50cnkucmVkaXJlY3RTdGFydCwgMCwgInJlZGlyZWN0U3RhcnQgc2hv
dWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0
ZXN0X2VxdWFscyhlbnRyeS5yZWRpcmVjdEVuZCwgMCwgInJlZGlyZWN0RW5kIHNob3VsZCBiZSAw
IGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAgdGVzdF9lcXVh
bHMoZW50cnkuZG9tYWluTG9va3VwU3RhcnQsIDAsICJkb21haW5Mb29rdXBTdGFydCBzaG91bGQg
YmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIHRlc3Rf
ZXF1YWxzKGVudHJ5LmRvbWFpbkxvb2t1cEVuZCwgMCwgImRvbWFpbkxvb2t1cEVuZCBzaG91bGQg
YmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIHRlc3Rf
ZXF1YWxzKGVudHJ5LmNvbm5lY3RTdGFydCwgMCwgImNvbm5lY3RTdGFydCBzaG91bGQgYmUgMCBp
biBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIHRlc3RfZXF1YWxz
KGVudHJ5LmNvbm5lY3RFbmQsIDAsICJjb25uZWN0RW5kIHNob3VsZCBiZSAwIGluIGNyb3NzLW9y
aWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAgdGVzdF9lcXVhbHMoZW50cnkucmVx
dWVzdFN0YXJ0LCAwLCAicmVxdWVzdFN0YXJ0IHNob3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiBy
ZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAgdGVzdF9lcXVhbHMoZW50cnkucmVzcG9uc2VT
dGFydCwgMCwgInJlc3BvbnNlU3RhcnQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGly
ZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0ZXN0X2VxdWFscyhlbnRyeS5zZWN1cmVDb25uZWN0
aW9uU3RhcnQsIDAsICJzZWN1cmVDb25uZWN0aW9uU3RhcnQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mt
b3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0ZXN0X2dyZWF0ZXJfdGhhbihl
bnRyeS5mZXRjaFN0YXJ0LCAwLCAiZmV0Y2hTdGFydCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAg
aW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0ZXN0X2dyZWF0
ZXJfdGhhbihlbnRyeS5yZXNwb25zZUVuZCwgMCwgInJlc3BvbnNlRW5kIHNob3VsZCBiZSBncmVh
dGVyIHRoYW4gMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAg
IGRvbmUoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICA8L3NjcmlwdD4NCisNCisgICAgPC9o
ZWFkPg0KKyAgICA8Ym9keT4NCisgICAgICAgIDxoMT5EZXNjcmlwdGlvbjwvaDE+DQorICAgICAg
ICA8cD5UaGlzIHRlc3QgdmFsaWRhdGVzIHRoZSB2YWx1ZXMgaW4gcmVzb3VyY2UgdGltaW5nIGZv
ciBhIGNyb3NzLW9yaWdpbiBzZXJ2ZXIgc2lkZSByZWRpcmVjdC48L3A+DQorICAgICAgICA8aWZy
YW1lIGlkPSJmcmFtZUNvbnRleHQiIHNyYz0iIiBzdHlsZT0id2lkdGg6IDI1MHB4OyBoZWlnaHQ6
IDI1MHB4OyI+PC9pZnJhbWU+DQorICAgICAgICA8c2NyaXB0Pg0KKyAgICAgICAgICAgIHRlc3Rf
ZXF1YWxzKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QsIHBhZ2VPcmlnaW4sICdTdGFydGluZyBkb2N1
bWVudC5sb2NhdGlvbi5ob3N0bmFtZSBpcyBjb3JyZWN0ICgnICsgcGFnZU9yaWdpbiArICcpJyk7
DQorDQorICAgICAgICAgICAgdmFyIGRlc3RVcmwgPSAnaHR0cDovLycgKyBwYWdlT3JpZ2luICsg
Jy93M2Mvd2VicGVyZi9yZXNvdXJjZXMvcmVkaXJlY3QucGhwJzsNCisgICAgICAgICAgICBkZXN0
VXJsICs9ICc/bG9jYXRpb249aHR0cDovLycgKyBjcm9zc09yaWdpbiArICIvdzNjL3dlYnBlcmYv
cmVzb3VyY2VzL2JsYW5rX3BhZ2VfZ3JlZW4uaHRtIjsNCisNCisgICAgICAgICAgICB2YXIgZnJh
bWVDb250ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lQ29udGV4dCIpOw0KKyAg
ICAgICAgICAgIGZyYW1lQ29udGV4dC5vbmxvYWQgPSBvbmxvYWRfdGVzdDsNCisgICAgICAgICAg
ICBmcmFtZUNvbnRleHQuc3JjID0gZGVzdFVybDsNCisgICAgICAgIDwvc2NyaXB0Pg0KKyAgICA8
L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNj
L3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90
aW1pbmdfY3Jvc3Nfb3JpZ2luX3JlZGlyZWN0X3dpdGhfdGltaW5nX2FsbG93X29yaWdpbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24v
SW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9y
ZWRpcmVjdF93aXRoX3RpbWluZ19hbGxvd19vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBjNmQ2MzJiY2ZjMmFjNDBhZDc2YmVhOGJkOTQ2MTRmMGNiMzRmMTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwv
cmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVj
dF93aXRoX3RpbWluZ19hbGxvd19vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAK
K0Rlc2NyaXB0aW9uDQorDQorVGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUgdmFsdWVzIGluIHJlc291
cmNlIHRpbWluZyBmb3IgYSB0aW1pbmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4gc2VydmVyIHNpZGUg
cmVkaXJlY3QuDQorDQorDQorDQorUEFTUyBTdGFydGluZyBkb2N1bWVudC5sb2NhdGlvbi5ob3N0
bmFtZSBpcyBjb3JyZWN0ICgxMjcuMC4wLjE6ODAwMCkgDQorUEFTUyByZWRpcmVjdFN0YXJ0IHNo
b3VsZCBiZSBncmVhdGVyIHRoYW4gMCBpbiB0aW1pbmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4gcmVk
aXJlY3QhIA0KK1BBU1MgcmVkaXJlY3RTdGFydCBzaG91bGQgYmUgZXF1YWwgdG8gc3RhcnRUaW1l
IGluIHRpbWluZyBhbGxvd2VkIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyByZWRpcmVj
dEVuZCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIHJlZGlyZWN0U3RhcnQgaW4gdGltaW5nIGFsbG93
ZWQgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIGZldGNoU3RhcnQgc2hvdWxkIGJlIG5v
IGxlc3MgdGhhbiByZWRpcmVjdEVuZCBpbiB0aW1pbmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4gcmVk
aXJlY3QhIA0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBl
cmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdf
Y3Jvc3Nfb3JpZ2luX3JlZGlyZWN0X3dpdGhfdGltaW5nX2FsbG93X29yaWdpbi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNl
LXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3Rfd2l0aF90
aW1pbmdfYWxsb3dfb3JpZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlODNkMjVlNGY5NzU0YjM1ZDBk
YWQxMjIyODc1YjE3ZjQ3ODA2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9y
ZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3JpZ2luX3JlZGlyZWN0X3dpdGhfdGltaW5nX2FsbG93X29y
aWdpbi5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBIVE1MPg0KKzxodG1sPg0KKyAg
ICA8aGVhZD4NCisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPg0KKyAgICAgICAgPHRp
dGxlPnJlc291cmNlIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdGltaW5nIGFsbG93ZWQgY3Jvc3Mt
b3JpZ2luIHJlZGlyZWN0PC90aXRsZT4NCisgICAgICAgIDxsaW5rIHJlbD0iYXV0aG9yIiB0aXRs
ZT0iSW50ZWwiIGhyZWY9Imh0dHA6Ly93d3cuaW50ZWwuY29tLyIgLz4NCisgICAgICAgIDxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvcmVzb3VyY2UtdGltaW5nLyNw
ZXJmb3JtYW5jZXJlc291cmNldGltaW5nIi8+DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii93M2MvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4NCisgICAgICAg
IDxzY3JpcHQgc3JjPSIvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL3dlYnBlcmZ0ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy93ZWJwZXJmL3Jlc291cmNl
cy93ZWJwZXJmdGVzdGhhcm5lc3NleHRlbnNpb24uanMiPjwvc2NyaXB0Pg0KKw0KKyAgICAgICAg
PHNjcmlwdD4NCisgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNldHVwKHtleHBsaWNpdF9kb25l
OiB0cnVlfSk7DQorICAgICAgICAgICAgdmFyIHBhZ2VPcmlnaW4gPSAiMTI3LjAuMC4xOjgwMDAi
Ow0KKyAgICAgICAgICAgIHZhciBjcm9zc09yaWdpbiA9ICJsb2NhbGhvc3Q6ODAwMCI7DQorICAg
ICAgICAgICAgZnVuY3Rpb24gb25sb2FkX3Rlc3QoKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICAgICAgdmFyIGNvbnRleHQgPSBuZXcgUGVyZm9ybWFuY2VDb250ZXh0KHBlcmZvcm1hbmNl
KTsNCisgICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gY29udGV4dC5nZXRFbnRyaWVzQnlOYW1l
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZUNvbnRleHQiKS5zcmMsICJyZXNvdXJjZSIp
WzBdOw0KKw0KKyAgICAgICAgICAgICAgICB0ZXN0X2dyZWF0ZXJfdGhhbihlbnRyeS5yZWRpcmVj
dFN0YXJ0LCAwLCAicmVkaXJlY3RTdGFydCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAgaW4gdGlt
aW5nIGFsbG93ZWQgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0
ZXN0X2VxdWFscyhlbnRyeS5yZWRpcmVjdFN0YXJ0LCBlbnRyeS5zdGFydFRpbWUsICJyZWRpcmVj
dFN0YXJ0IHNob3VsZCBiZSBlcXVhbCB0byBzdGFydFRpbWUgaW4gdGltaW5nIGFsbG93ZWQgY3Jv
c3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0ZXN0X25vbGVzc190aGFu
KGVudHJ5LnJlZGlyZWN0RW5kLCBlbnRyeS5yZWRpcmVjdFN0YXJ0LCAicmVkaXJlY3RFbmQgc2hv
dWxkIGJlIG5vIGxlc3MgdGhhbiByZWRpcmVjdFN0YXJ0IGluIHRpbWluZyBhbGxvd2VkIGNyb3Nz
LW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAgdGVzdF9ub2xlc3NfdGhhbihl
bnRyeS5mZXRjaFN0YXJ0LCBlbnRyeS5yZWRpcmVjdEVuZCwgImZldGNoU3RhcnQgc2hvdWxkIGJl
IG5vIGxlc3MgdGhhbiByZWRpcmVjdEVuZCBpbiB0aW1pbmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4g
cmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIGRvbmUoKTsNCisgICAgICAgICAgICB9DQor
ICAgICAgICA8L3NjcmlwdD4NCisNCisgICAgPC9oZWFkPg0KKyAgICA8Ym9keT4NCisgICAgICAg
IDxoMT5EZXNjcmlwdGlvbjwvaDE+DQorICAgICAgICA8cD5UaGlzIHRlc3QgdmFsaWRhdGVzIHRo
ZSB2YWx1ZXMgaW4gcmVzb3VyY2UgdGltaW5nIGZvciBhIHRpbWluZyBhbGxvd2VkIGNyb3NzLW9y
aWdpbiBzZXJ2ZXIgc2lkZSByZWRpcmVjdC48L3A+DQorICAgICAgICA8aWZyYW1lIGlkPSJmcmFt
ZUNvbnRleHQiIHNyYz0iIiBzdHlsZT0id2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4OyI+PC9p
ZnJhbWU+DQorICAgICAgICA8c2NyaXB0Pg0KKyAgICAgICAgICAgIHRlc3RfZXF1YWxzKGRvY3Vt
ZW50LmxvY2F0aW9uLmhvc3QsIHBhZ2VPcmlnaW4sICdTdGFydGluZyBkb2N1bWVudC5sb2NhdGlv
bi5ob3N0bmFtZSBpcyBjb3JyZWN0ICgnICsgcGFnZU9yaWdpbiArICcpJyk7DQorDQorICAgICAg
ICAgICAgdmFyIGRlc3RVcmwgPSAnaHR0cDovLycgKyBwYWdlT3JpZ2luICsgJy93M2Mvd2VicGVy
Zi9yZXNvdXJjZXMvcmVkaXJlY3QucGhwJzsNCisgICAgICAgICAgICBkZXN0VXJsICs9ICc/bG9j
YXRpb249aHR0cDovLycgKyBjcm9zc09yaWdpbiArICIvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL2Js
YW5rX3BhZ2VfZ3JlZW5fd2l0aF9hbGxvd190aW1pbmcucGhwIjsNCisgICAgICAgICAgICBkZXN0
VXJsICs9ICc/b3JpZ2luPWh0dHA6Ly8nICsgcGFnZU9yaWdpbjsNCisNCisgICAgICAgICAgICB2
YXIgZnJhbWVDb250ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lQ29udGV4dCIp
Ow0KKyAgICAgICAgICAgIGZyYW1lQ29udGV4dC5vbmxvYWQgPSBvbmxvYWRfdGVzdDsNCisgICAg
ICAgICAgICBmcmFtZUNvbnRleHQuc3JjID0gZGVzdFVybDsNCisgICAgICAgIDwvc2NyaXB0Pg0K
KyAgICA8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNv
dXJjZV90aW1pbmdfc2FtZV9vcmlnaW5fcmVkaXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWlu
Zy90ZXN0X3Jlc291cmNlX3RpbWluZ19zYW1lX29yaWdpbl9yZWRpcmVjdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWFmYzRmZTQ0MmJjYjc1N2IzZWFhNDU1NDA1MjgwZGEwZWQ1MTIyNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlz
c2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfc2FtZV9vcmln
aW5fcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0Rlc2NyaXB0aW9uDQor
DQorVGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUgdmFsdWVzIG9mIHRoZSByZWRpcmVjdFN0YXJ0L0Vu
ZCBpbiByZXNvdXJjZSB0aW1pbmcgZm9yIGEgc2FtZS1vcmlnaW4gc2VydmVyIHNpZGUgcmVzb3Vy
Y2UgcmVkaXJlY3QuDQorDQorDQorDQorUEFTUyBTdGFydGluZyBkb2N1bWVudC5sb2NhdGlvbi5o
b3N0bmFtZSBpcyBjb3JyZWN0ICgxMjcuMC4wLjE6ODAwMCkgDQorUEFTUyByZWRpcmVjdFN0YXJ0
IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMCBpbiBzYW1lLW9yaWdpbiByZWRpcmVjdCEgDQorUEFT
UyByZWRpcmVjdFN0YXJ0IHNob3VsZCBiZSBlcXVhbCB0byBzdGFydFRpbWUgaW4gc2FtZS1vcmln
aW4gcmVkaXJlY3QhIA0KK1BBU1MgcmVkaXJlY3RFbmQgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiBy
ZWRpcmVjdFN0YXJ0IGluIHNhbWUtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIGZldGNoU3RhcnQg
c2hvdWxkIGJlIG5vIGxlc3MgdGhhbiByZWRpcmVjdEVuZCBpbiBzYW1lLW9yaWdpbiByZWRpcmVj
dCEgDQorDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9z
dWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19zYW1l
X29yaWdpbl9yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVy
Zi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19z
YW1lX29yaWdpbl9yZWRpcmVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4YTQyZmEzMmI1NDAwMzExOWM3
ZmFlY2JiMzE5NjA2NmRmMmI5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3Rf
cmVzb3VyY2VfdGltaW5nX3NhbWVfb3JpZ2luX3JlZGlyZWN0Lmh0bWwKQEAgLTAsMCArMSw0NyBA
QAorPCFET0NUWVBFIEhUTUw+DQorPGh0bWw+DQorICAgIDxoZWFkPg0KKyAgICAgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiIC8+DQorICAgICAgICA8dGl0bGU+cmVkaXJlY3RTdGFydCBhbmQgcmVk
aXJlY3RFbmQgaW5mb3JtYXRpb24gaW4gc2FtZS1vcmlnaW4gcmVkaXJlY3QgcmVzb3VyY2UgdGlt
aW5nPC90aXRsZT4NCisgICAgICAgIDxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iSW50ZWwiIGhy
ZWY9Imh0dHA6Ly93d3cuaW50ZWwuY29tLyIgLz4NCisgICAgICAgIDxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvcmVzb3VyY2UtdGltaW5nLyNwZXJmb3JtYW5jZXJl
c291cmNldGltaW5nIi8+DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii93M2MvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4NCisgICAgICAgIDxzY3JpcHQgc3Jj
PSIvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL3dlYnBlcmZ0ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy93ZWJwZXJmL3Jlc291cmNlcy93ZWJwZXJmdGVz
dGhhcm5lc3NleHRlbnNpb24uanMiPjwvc2NyaXB0Pg0KKw0KKyAgICAgICAgPHNjcmlwdD4NCisg
ICAgICAgICAgIA0KKyAgICAgICAgICAgIHNldHVwKHtleHBsaWNpdF9kb25lOiB0cnVlfSk7DQor
ICAgICAgICAgICAgdmFyIHBhZ2VPcmlnaW4gPSAiMTI3LjAuMC4xOjgwMDAiOw0KKw0KKyAgICAg
ICAgICAgIGZ1bmN0aW9uIG9ubG9hZF90ZXN0KCkNCisgICAgICAgICAgICB7DQorICAgICAgICAg
ICAgICAgIHZhciBjb250ZXh0ID0gbmV3IFBlcmZvcm1hbmNlQ29udGV4dChwZXJmb3JtYW5jZSk7
DQorICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IGNvbnRleHQuZ2V0RW50cmllc0J5TmFtZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWVDb250ZXh0Iikuc3JjLCAicmVzb3VyY2UiKVsw
XTsNCisNCisgICAgICAgICAgICAgICAgdGVzdF9ncmVhdGVyX3RoYW4oZW50cnkucmVkaXJlY3RT
dGFydCwgMCwgInJlZGlyZWN0U3RhcnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwIGluIHNhbWUt
b3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0ZXN0X2VxdWFscyhlbnRyeS5y
ZWRpcmVjdFN0YXJ0LCBlbnRyeS5zdGFydFRpbWUsICJyZWRpcmVjdFN0YXJ0IHNob3VsZCBiZSBl
cXVhbCB0byBzdGFydFRpbWUgaW4gc2FtZS1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAg
ICAgICAgIHRlc3Rfbm9sZXNzX3RoYW4oZW50cnkucmVkaXJlY3RFbmQsIGVudHJ5LnJlZGlyZWN0
U3RhcnQsICJyZWRpcmVjdEVuZCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIHJlZGlyZWN0U3RhcnQg
aW4gc2FtZS1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIHRlc3Rfbm9sZXNz
X3RoYW4oZW50cnkuZmV0Y2hTdGFydCwgZW50cnkucmVkaXJlY3RFbmQsICJmZXRjaFN0YXJ0IHNo
b3VsZCBiZSBubyBsZXNzIHRoYW4gcmVkaXJlY3RFbmQgaW4gc2FtZS1vcmlnaW4gcmVkaXJlY3Qh
Iik7DQorICAgICAgICAgICAgICAgIGRvbmUoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICA8
L3NjcmlwdD4NCisNCisgICAgPC9oZWFkPg0KKyAgICA8Ym9keT4NCisgICAgICAgIDxoMT5EZXNj
cmlwdGlvbjwvaDE+DQorICAgICAgICA8cD5UaGlzIHRlc3QgdmFsaWRhdGVzIHRoZSB2YWx1ZXMg
b2YgdGhlIHJlZGlyZWN0U3RhcnQvRW5kIGluIHJlc291cmNlIHRpbWluZyBmb3IgYSBzYW1lLW9y
aWdpbiBzZXJ2ZXIgc2lkZSByZXNvdXJjZSByZWRpcmVjdC48L3A+DQorICAgICAgICA8aWZyYW1l
IGlkPSJmcmFtZUNvbnRleHQiIHNyYz0iIiBzdHlsZT0id2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1
MHB4OyI+PC9pZnJhbWU+DQorICAgICAgICA8c2NyaXB0Pg0KKyAgICAgICAgICAgIHRlc3RfZXF1
YWxzKGRvY3VtZW50LmxvY2F0aW9uLmhvc3QsIHBhZ2VPcmlnaW4sICdTdGFydGluZyBkb2N1bWVu
dC5sb2NhdGlvbi5ob3N0bmFtZSBpcyBjb3JyZWN0ICgnICsgcGFnZU9yaWdpbiArICcpJyk7DQor
DQorICAgICAgICAgICAgdmFyIGRlc3RVcmwgPSAnaHR0cDovLycgKyBwYWdlT3JpZ2luICsgJy93
M2Mvd2VicGVyZi9yZXNvdXJjZXMvcmVkaXJlY3QucGhwJzsNCisgICAgICAgICAgICBkZXN0VXJs
ICs9ICc/bG9jYXRpb249aHR0cDovLycgKyBwYWdlT3JpZ2luICsgIi93M2Mvd2VicGVyZi9yZXNv
dXJjZXMvYmxhbmtfcGFnZV9ncmVlbi5odG0iOw0KKw0KKyAgICAgICAgICAgIHZhciBmcmFtZUNv
bnRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWVDb250ZXh0Iik7DQorICAgICAg
ICAgICAgZnJhbWVDb250ZXh0Lm9ubG9hZCA9IG9ubG9hZF90ZXN0Ow0KKyAgICAgICAgICAgIGZy
YW1lQ29udGV4dC5zcmMgPSBkZXN0VXJsOw0KKyAgICAgICAgPC9zY3JpcHQ+DQorPC9ib2R5Pg0K
KzwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180661</attachid>
            <date>2012-12-24 03:55:20 -0800</date>
            <delta_ts>2013-01-14 06:03:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103867-20121224195833.patch</filename>
            <type>text/plain</type>
            <size>5746</size>
            <attacher name="pdeng6">pan.deng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTAzNWE4MzgzOTFlM2Iy
OGI4M2ZkNWI1YzQyYjViZDYwOWFjNjBlYy4uMDQ3YTc3NWYxZmJkYTM0NzZhOWUwNmZhYWY1YzAy
MDgzMDI1NDA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTI0ICBQYW4g
RGVuZyAgPHBhbi5kZW5nQGludGVsLmNvbT4KKworICAgICAgICBbUmVzb3VyY2UgVGltaW5nXVJl
ZGlyZWN0IHN0YXJ0L2VuZCB0aW1lIG5lZWQgdG8gYmUgcmVjb3JkZWQgZm9yIFczQyBSZXNvdXJj
ZSB0aW1pbmcgQVBJLiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzg2Ny4gCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuIAor
CisgICAgICAgIFRoaXMgcGF0Y2ggc3RvcmVzIHJlZGlyZWN0IHN0YXJ0L2VuZCB0aW1lIGluIENh
Y2hlZFJlc291cmNlIGZvciBSZXNvdXJjZVRpbWluZywgdGhlIGFkZFJlZGlyZWN0CisgICAgICAg
IGZ1bmN0aW9uIGlzIGludm9rZWQgaW4gU3VicmVzb3VyY2VMb2FkZXIgc2luY2UgaXQgcmVhbGl6
ZXMgcmVkaXJlY3Qgb2YgTWFpblJlc291cmNlIGFuZCBTdWJSZXNvdXJjZS4KKyAgICAgICAgUmVk
aXJlY3QgdGltaW5nIGluZm8gd2lsbCBiZSBleHBvc2VkIGluIENhY2hlZFJlc291cmNlTG9hZGVy
IGFzIG90aGVyIHRpbWluZyBpbmZvcm1hdGlvbiBpbiBmdXR1cmUuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCB0aGlzIHBhdGNoIGp1c3QgcmVjb3JkcyB0aW1lc3RhbXAsIG5vdCBleHBvc2UgZm9y
IFJlc291cmNlVGltaW5nIHlldC4KKworICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZFJlZGlyZWN0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKENhY2hl
ZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZWRpcmVjdFN0
YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RFbmRU
aW1lKToKKwogMjAxMi0xMi0yMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ha2UgdXNlIG9mIHRoZSBuZXcgSW5zcGVj
dG9yU3RhdGU6OnJlbW92ZSgpIGluIGluc3BlY3RvciBhZ2VudHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDE0ZGEyY2ExMTNiNmRmZTM0YmI2OGQ4
MzU2YWI5M2UxZGE1NmM2MDQuLjcwY2YyZGQ5Y2Q3ZTJhZDNjY2NhZDk2MWQ4NTYwY2YyMDk1NjE1
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTQzLDYgKzE0NCwxMSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICBtX3Jl
c291cmNlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAg
ICAgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlORykKKyAgICBpZiAoIXJlZGlyZWN0UmVz
cG9uc2UuaXNOdWxsKCkgJiYgcmVkaXJlY3RSZXNwb25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKSkK
KyAgICAgICAgbV9yZXNvdXJjZS0+YWRkUmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZS5yZXNvdXJj
ZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFRpbWUpOworI2VuZGlmCisKICAgICBpZiAobmV3UmVxdWVz
dC5pc051bGwoKSB8fCByZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4
IDA3YjRkMDliYTFlOWRhNDg0MDMyZGNlNzJiNzg5NDAzYTcwYjllYWEuLjViZGUwOWRlN2E1NWIz
MzAzMzYyMDk2MTQyMTgxYTA5NWJmODQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNCw2ICs0LDcgQEAKICAgICBDb3B5cmlnaHQg
KEMpIDIwMDIgV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQogICAgIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKICAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2MCw2
ICsxNjEsMTAgQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlKQogICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9u
VGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJl
ZCkKICAgICAsIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lKDApCiAgICAgLCBtX2xvYWRGaW5pc2hU
aW1lKDApCisjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlORykKKyAgICAsIG1fcmVkaXJlY3RTdGFy
dFRpbWUoMCkKKyAgICAsIG1fcmVkaXJlY3RFbmRUaW1lKDApCisjZW5kaWYKICAgICAsIG1fZW5j
b2RlZFNpemUoMCkKICAgICAsIG1fZGVjb2RlZFNpemUoMCkKICAgICAsIG1fYWNjZXNzQ291bnQo
MCkKQEAgLTg2Niw2ICs4NzEsMTUgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0TG9hZFByaW9y
aXR5KFJlc291cmNlTG9hZFByaW9yaXR5IGxvYWRQcmlvcml0eSkKICAgICBtX2xvYWRQcmlvcml0
eSA9IGxvYWRQcmlvcml0eTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCit2b2lk
IENhY2hlZFJlc291cmNlOjphZGRSZWRpcmVjdChkb3VibGUgcmVkaXJlY3RTdGFydFRpbWUpCit7
CisgICAgaWYgKCFtX3JlZGlyZWN0U3RhcnRUaW1lKQorICAgICAgICBtX3JlZGlyZWN0U3RhcnRU
aW1lID0gcmVkaXJlY3RTdGFydFRpbWU7CisgICAgbV9yZWRpcmVjdEVuZFRpbWUgPSBtb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK30KKyNlbmRpZgorCiAKIENhY2hlZFJlc291cmNlOjpD
YWNoZWRSZXNvdXJjZUNhbGxiYWNrOjpDYWNoZWRSZXNvdXJjZUNhbGxiYWNrKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcmVz
b3VyY2UocmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCmluZGV4IGM3ZWJkNTRhOTA1NDNiYzdiY2Y5ZTk2NTBhMTFjNTViYzlhYWQ4NjEuLmEz
MmY2NDZkOGQyOGVhMzg5MWYyOGRlMGYyODE4M2Q1M2Y5N2NmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0zLDYgKzMsNyBAQAogICAgIENv
cHlyaWdodCAoQykgMjAwMSBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KICAgICBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNTYsNiArMjU3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvYWRGaW5pc2hUaW1lKGRv
dWJsZSBmaW5pc2hUaW1lKSB7IG1fbG9hZEZpbmlzaFRpbWUgPSBmaW5pc2hUaW1lOyB9CiAgICAg
ZG91YmxlIGxvYWRGaW5pc2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkRmluaXNoVGltZTsg
fQogCisjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlORykKKyAgICBkb3VibGUgcmVkaXJlY3RTdGFy
dFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0U3RhcnRUaW1lOyB9CisgICAgZG91Ymxl
IHJlZGlyZWN0RW5kVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RFbmRUaW1lOyB9Cisg
ICAgdm9pZCBhZGRSZWRpcmVjdChkb3VibGUpOworI2VuZGlmCisKICAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
CkBAIC0zMTksNiArMzI2LDExIEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdERlY29kZWRB
Y2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCiAgICAg
ZG91YmxlIG1fbG9hZEZpbmlzaFRpbWU7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQor
ICAgIGRvdWJsZSBtX3JlZGlyZWN0U3RhcnRUaW1lOworICAgIGRvdWJsZSBtX3JlZGlyZWN0RW5k
VGltZTsKKyNlbmRpZgorCiAgICAgdW5zaWduZWQgbV9lbmNvZGVkU2l6ZTsKICAgICB1bnNpZ25l
ZCBtX2RlY29kZWRTaXplOwogICAgIHVuc2lnbmVkIG1fYWNjZXNzQ291bnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182559</attachid>
            <date>2013-01-14 06:03:35 -0800</date>
            <delta_ts>2014-02-05 11:07:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103867-20130114220653.patch</filename>
            <type>text/plain</type>
            <size>32071</size>
            <attacher name="pdeng6">pan.deng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAxOGZiOTU1NDM0MTkx
MDIyYTI0OGUxOWRiZDRkMTk0NDhhNWI2ZC4uZWVmNDhiNjg4YWY1MDRhNzYxZTU0M2VmYjQ3Nzk2
ZDRmOGVjNWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAxLTE0ICBQYW4g
RGVuZyAgPHBhbi5kZW5nQGludGVsLmNvbT4KKworICAgICAgICBbUmVzb3VyY2UgVGltaW5nXSBS
ZWNvcmQgcmVkaXJlY3QgaW5mb3JtYXRpb24gYW5kIGV4cG9zZSBpbiBSZXNvdXJjZSBUaW1pbmcg
ZW50cmllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzg2Ny4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIHN0b3JlcyBsYXN0IHJlZGlyZWN0IHRpbWUgaW4gQ2FjaGVkUmVzb3VyY2Us
IGFuZCBleHBvc2UgaW4gcmVzb3VyY2UKKyAgICAgICAgdGltaW5nIGVudGlyZXMuIEFjY29yZGlu
ZyB0byBzcGVjIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvQ1ItcmVzb3VyY2UtdGltaW5nLTIw
MTIwNTIyLworCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Np
b24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdp
bl9yZWRpcmVjdC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1
Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3Nz
X29yaWdpbl9yZWRpcmVjdF93aXRoX3RpbWluZ19hbGxvd19vcmlnaW4uaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRp
bWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19zYW1lX29yaWdpbl9yZWRpcmVjdC5odG1sCisKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
OjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjphZGRSZWRpcmVjdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmg6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6bGFzdFJlZGlyZWN0UmVwb3J0VGltZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9uZSk6CisgICAgICAgICogcGFnZS9QZXJmb3Jt
YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6YWRkUmVzb3VyY2VUaW1p
bmcpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuaDoKKyAgICAgICAgKFBlcmZvcm1hbmNl
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlRW50cnkuaDoKKyAgICAgICAgKFBlcmZvcm1h
bmNlRW50cnkpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpQZXJmb3JtYW5j
ZVJlc291cmNlVGltaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlUmVzb3VyY2VU
aW1pbmc6OnJlZGlyZWN0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNv
dXJjZVRpbWluZzo6cmVkaXJlY3RFbmQpOgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VS
ZXNvdXJjZVRpbWluZzo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6ZHVyYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6ZmV0Y2hTdGFydCk6CisgICAgICAg
ICogcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpjcmVhdGUpOgorICAgICAgICAoUGVyZm9ybWFuY2VS
ZXNvdXJjZVRpbWluZyk6CisKIDIwMTMtMDEtMTQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3
QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgTWVkaWFTdHJl
YW06OnJlYWR5U3RhdGUgdG8gYW4gYm9vbGVhbiBhdHRyaWJ1dGUgY2FsbGVkIGVuZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDhkZjc1ZWRi
OTE0Y2Q1Yzg5ZjMxYjg0MGFkYjcxMTBjNTk2NGY0MS4uMGFjZWRhZjAzNzJmMmYxYTAzNWI1ODRi
MjcyOGZkMTRlMzBjMjhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSW50ZWwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNDMsNiArMTQ0LDExIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
CiAgICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQorICAgIGlm
ICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSAmJiByZWRpcmVjdFJlc3BvbnNlLnJlc291cmNl
TG9hZFRpbWluZygpKQorICAgICAgICBtX3Jlc291cmNlLT5hZGRSZWRpcmVjdCgpOworI2VuZGlm
CisKICAgICBpZiAobmV3UmVxdWVzdC5pc051bGwoKSB8fCByZWFjaGVkVGVybWluYWxTdGF0ZSgp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCmluZGV4IDg4Y2YyODYxYjU4MmNkMTBjYzI3MTFlYjgwMTExZjMyMDlj
ZWNlNmMuLjU5MmM0NmVjNDgwOGJmNjEzNGFmODRkOTNhOTc2YmI2NmVlMmU3NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNCw2ICs0
LDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDIgV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUu
b3JnKQogICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdt
YWlsLmNvbSkKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENv
cHlyaWdodCAoQykgMjAxMyBJbnRlbCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTE2MCw2ICsxNjEsOSBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVz
b3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUpCiAgICAgLCBt
X2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2U6OmRlY29kZWRE
YXRhRGVsZXRpb25UaW1lckZpcmVkKQogICAgICwgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkK
ICAgICAsIG1fbG9hZEZpbmlzaFRpbWUoMCkKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQor
ICAgICwgbV9sYXN0UmVkaXJlY3RSZXBvcnRUaW1lKDApCisjZW5kaWYKICAgICAsIG1fZW5jb2Rl
ZFNpemUoMCkKICAgICAsIG1fZGVjb2RlZFNpemUoMCkKICAgICAsIG1fYWNjZXNzQ291bnQoMCkK
QEAgLTg2OCw2ICs4NzIsMTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0TG9hZFByaW9yaXR5
KFJlc291cmNlTG9hZFByaW9yaXR5IGxvYWRQcmlvcml0eSkKICAgICBtX2xvYWRQcmlvcml0eSA9
IGxvYWRQcmlvcml0eTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9USU1JTkcpCit2b2lkIENh
Y2hlZFJlc291cmNlOjphZGRSZWRpcmVjdCgpCit7CisgICAgbV9sYXN0UmVkaXJlY3RSZXBvcnRU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cit9CisjZW5kaWYKIAogQ2FjaGVk
UmVzb3VyY2U6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2s6OkNhY2hlZFJlc291cmNlQ2FsbGJhY2so
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQog
ICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgKaW5kZXggYzdlYmQ1NGE5MDU0M2JjN2JjZjllOTY1MGExMWM1NWJj
OWFhZDg2MS4uODY2NGNhZDUyNjIwYTNkOWJiYzc5MWZhNjVhY2YxYzA1YjBiNTEzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTMsNiArMyw3
IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3Jn
PgogICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWls
LmNvbSkKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHly
aWdodCAoQykgMjAxMyBJbnRlbCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI1Niw2ICsyNTcsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZEZp
bmlzaFRpbWUoZG91YmxlIGZpbmlzaFRpbWUpIHsgbV9sb2FkRmluaXNoVGltZSA9IGZpbmlzaFRp
bWU7IH0KICAgICBkb3VibGUgbG9hZEZpbmlzaFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRG
aW5pc2hUaW1lOyB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5HKQorICAgIGRvdWJsZSBs
YXN0UmVkaXJlY3RSZXBvcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UmVkaXJlY3RSZXBv
cnRUaW1lOyB9CisgICAgdm9pZCBhZGRSZWRpcmVjdCgpOworI2VuZGlmCisKICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6CkBAIC0zMTksNiArMzI1LDEwIEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbGFzdERl
Y29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hl
CiAgICAgZG91YmxlIG1fbG9hZEZpbmlzaFRpbWU7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfVElN
SU5HKQorICAgIGRvdWJsZSBtX2xhc3RSZWRpcmVjdFJlcG9ydFRpbWU7CisjZW5kaWYKKwogICAg
IHVuc2lnbmVkIG1fZW5jb2RlZFNpemU7CiAgICAgdW5zaWduZWQgbV9kZWNvZGVkU2l6ZTsKICAg
ICB1bnNpZ25lZCBtX2FjY2Vzc0NvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggOTcyOTdiMTYyM2Y3OGU5YmIx
MGNjNDNjYmVmNjY2MmZlNTg0YmQxOS4uZjlhZTcwZDVhMDg5MDA3NTVhYTU2MDg2OTljZjU1ZDYy
NWM1ZWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03MTAsNyArNzEwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6bG9hZERvbmUoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICBpZiAo
aW5pdGlhdG9ySXQgIT0gbV9pbml0aWF0b3JNYXAuZW5kKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIGNvbnN0IEluaXRpYXRvckluZm8mIGluZm8gPSBp
bml0aWF0b3JJdC0+dmFsdWU7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLT5kb21XaW5kb3coKS0+
cGVyZm9ybWFuY2UoKS0+YWRkUmVzb3VyY2VUaW1pbmcoaW5mby5uYW1lLCBkb2N1bWVudCgpLCBy
ZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291cmNlLT5yZXNwb25zZSgpLCBpbmZvLnN0
YXJ0VGltZSwgcmVzb3VyY2UtPmxvYWRGaW5pc2hUaW1lKCkpOworICAgICAgICAgICAgZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCktPnBlcmZvcm1hbmNlKCktPmFkZFJlc291cmNlVGltaW5nKGluZm8u
bmFtZSwgZG9jdW1lbnQoKSwgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLCByZXNvdXJjZS0+
cmVzcG9uc2UoKSwgaW5mby5zdGFydFRpbWUsIHJlc291cmNlLT5sb2FkRmluaXNoVGltZSgpLCBy
ZXNvdXJjZS0+bGFzdFJlZGlyZWN0UmVwb3J0VGltZSgpKTsKICAgICAgICAgICAgIG1faW5pdGlh
dG9yTWFwLnJlbW92ZShpbml0aWF0b3JJdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2UuY3BwCmluZGV4IGU2ODcxYjdiN2Q5ZDYwMTZlMjdlNWU2YTgxNWIwMjky
YjY0Yzc5ZDAuLmRiMjVlZmZiZjExZTY1YjNmYzVmOTE1Yzc4ZGZmMTA4MGM2M2MyMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuY3BwCkBAIC0xODUsMTIgKzE4NSwxMiBAQCB2b2lkIFBl
cmZvcm1hbmNlOjp3ZWJraXRTZXRSZXNvdXJjZVRpbWluZ0J1ZmZlclNpemUodW5zaWduZWQgc2l6
ZSkKICAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJr
aXRyZXNvdXJjZXRpbWluZ2J1ZmZlcmZ1bGxFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKLXZv
aWQgUGVyZm9ybWFuY2U6OmFkZFJlc291cmNlVGltaW5nKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9y
TmFtZSwgRG9jdW1lbnQqIGluaXRpYXRvckRvY3VtZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgaW5pdGlh
dGlvblRpbWUsIGRvdWJsZSBmaW5pc2hUaW1lKQordm9pZCBQZXJmb3JtYW5jZTo6YWRkUmVzb3Vy
Y2VUaW1pbmcoY29uc3QgU3RyaW5nJiBpbml0aWF0b3JOYW1lLCBEb2N1bWVudCogaW5pdGlhdG9y
RG9jdW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGRvdWJsZSBpbml0aWF0aW9uVGltZSwgZG91YmxlIGZpbmlzaFRp
bWUsIGRvdWJsZSBsYXN0UmVkaXJlY3RSZXBvcnRUaW1lKQogewogICAgIGlmIChpc1Jlc291cmNl
VGltaW5nQnVmZmVyRnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8UGVyZm9y
bWFuY2VFbnRyeT4gZW50cnkgPSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpjcmVhdGUoaW5p
dGlhdG9yTmFtZSwgcmVxdWVzdCwgcmVzcG9uc2UsIGluaXRpYXRpb25UaW1lLCBmaW5pc2hUaW1l
LCBpbml0aWF0b3JEb2N1bWVudCk7CisgICAgUmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+IGVudHJ5
ID0gUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6Y3JlYXRlKGluaXRpYXRvck5hbWUsIHJlcXVl
c3QsIHJlc3BvbnNlLCBpbml0aWF0aW9uVGltZSwgbGFzdFJlZGlyZWN0UmVwb3J0VGltZSwgZmlu
aXNoVGltZSwgaW5pdGlhdG9yRG9jdW1lbnQpOwogCiAgICAgbV9yZXNvdXJjZVRpbWluZ0J1ZmZl
ci5hcHBlbmQoZW50cnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmgKaW5kZXggNDRkYjdj
ODE3NDFlNzNlMDQ5MmJjMzY1MTQ5ZTFmZmFkNTI2NDMxMS4uYTA3NWQ2ZTE0MmI1MTkyOWYyNDIx
YmQ3ZjQ2NmM0NDUxMGEwNmE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaApAQCAtNzgs
NyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHdlYmtpdHJlc291cmNldGltaW5nYnVmZmVyZnVsbCk7CiAKLSAgICB2b2lkIGFkZFJlc291cmNl
VGltaW5nKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yTmFtZSwgRG9jdW1lbnQqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIGluaXRpYXRpb25U
aW1lLCBkb3VibGUgZmluaXNoVGltZSk7CisgICAgdm9pZCBhZGRSZXNvdXJjZVRpbWluZyhjb25z
dCBTdHJpbmcmIGluaXRpYXRvck5hbWUsIERvY3VtZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSBpbml0aWF0aW9uVGltZSwgZG91Ymxl
IGZpbmlzaFRpbWUsIGRvdWJsZSBsYXN0UmVkaXJlY3RSZXBvcnRUaW1lKTsKICNlbmRpZgogCiAg
ICAgdXNpbmcgUmVmQ291bnRlZDxQZXJmb3JtYW5jZT46OnJlZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZUVudHJ5LmgKaW5kZXggNGRiMTAxZGIwNTIyYWI4NGViMGZjODc1NzAzN2NiMDNh
YTMyZjIxOS4uNDlmNGFjMmNjNDAyMDM4YzRjYzA1ZjE4M2RhZTY3OThkNjNhMDViZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVibGlj
OgogCiAgICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcgZW50cnlUeXBlKCkgY29u
c3Q7Ci0gICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OwotICAgIGRvdWJsZSBkdXJhdGlvbigp
IGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgZG91YmxlIGR1cmF0aW9uKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvdXJj
ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCmluZGV4IDUzOTg3OGY2ZjQ3MGNmYTgwYjZhYjlmOGQw
MWFjYzhhOTVkZWQ3NTIuLjNhNmMxNmI3ODExMDVlMzY5NGRlOTA3MjJlN2MwNzA1OWI1YjFjNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWlu
Zy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5n
LmNwcApAQCAtNzYsMTAgKzc2LDExIEBAIHN0YXRpYyBib29sIHBhc3Nlc1RpbWluZ0FsbG93Q2hl
Y2soY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIERvY3VtZW50KiByCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpQZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yVHlwZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
ZG91YmxlIGluaXRpYXRpb25UaW1lLCBkb3VibGUgZmluaXNoVGltZSwgRG9jdW1lbnQqIHJlcXVl
c3RpbmdEb2N1bWVudCkKK1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OlBlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JUeXBlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBk
b3VibGUgaW5pdGlhdGlvblRpbWUsIGRvdWJsZSBsYXN0UmVkaXJlY3RSZXBvcnRUaW1lLCBkb3Vi
bGUgZmluaXNoVGltZSwgRG9jdW1lbnQqIHJlcXVlc3RpbmdEb2N1bWVudCkKICAgICA6IFBlcmZv
cm1hbmNlRW50cnkocmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgInJlc291cmNlIiwgbW9ub3Rvbmlj
VGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMocmVxdWVzdGluZ0RvY3VtZW50LCBpbml0aWF0aW9u
VGltZSksIG1vbm90b25pY1RpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKHJlcXVlc3RpbmdEb2N1
bWVudCwgZmluaXNoVGltZSkpCiAgICAgLCBtX2luaXRpYXRvclR5cGUoaW5pdGlhdG9yVHlwZSkK
ICAgICAsIG1fdGltaW5nKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQorICAgICwgbV9s
YXN0UmVkaXJlY3RSZXBvcnRUaW1lKGxhc3RSZWRpcmVjdFJlcG9ydFRpbWUpCiAgICAgLCBtX2Zp
bmlzaFRpbWUoZmluaXNoVGltZSkKICAgICAsIG1fZGlkUmV1c2VDb25uZWN0aW9uKHJlc3BvbnNl
LmNvbm5lY3Rpb25SZXVzZWQoKSkKICAgICAsIG1fc2hvdWxkUmVwb3J0RGV0YWlscyhwYXNzZXNU
aW1pbmdBbGxvd0NoZWNrKHJlc3BvbnNlLCByZXF1ZXN0aW5nRG9jdW1lbnQpKQpAQCAtOTgsOSAr
OTksMTAgQEAgQXRvbWljU3RyaW5nIFBlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmc6OmluaXRpYXRv
clR5cGUoKSBjb25zdAogCiBkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6cmVkaXJl
Y3RTdGFydCgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IE5lZWQgdG8gdHJhY2sgYW5kIHJlcG9y
dCByZWRpcmVjdHMgZm9yIHJlc291cmNlcy4KICAgICBpZiAoIW1fc2hvdWxkUmVwb3J0RGV0YWls
cykKICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICBpZiAobV9sYXN0UmVkaXJlY3RSZXBvcnRUaW1l
KQorICAgICAgICByZXR1cm4gc3RhcnRUaW1lKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEw
OCwxMyArMTEwLDI4IEBAIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nOjpyZWRpcmVj
dEVuZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Nob3VsZFJlcG9ydERldGFpbHMpCiAgICAgICAg
IHJldHVybiAwLjA7CisgICAgaWYgKG1fbGFzdFJlZGlyZWN0UmVwb3J0VGltZSkKKyAgICAgICAg
cmV0dXJuIG1vbm90b25pY1RpbWVUb0RvY3VtZW50TWlsbGlzZWNvbmRzKG1fcmVxdWVzdGluZ0Rv
Y3VtZW50LmdldCgpLCBtX2xhc3RSZWRpcmVjdFJlcG9ydFRpbWUpOwogICAgIHJldHVybiAwOwog
fQogCitkb3VibGUgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZzo6c3RhcnRUaW1lKCkgY29uc3QK
K3sKKyAgICBpZiAobV9sYXN0UmVkaXJlY3RSZXBvcnRUaW1lICYmICFtX3Nob3VsZFJlcG9ydERl
dGFpbHMpCisgICAgICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25k
cyhtX3JlcXVlc3RpbmdEb2N1bWVudC5nZXQoKSwgbV90aW1pbmctPnJlcXVlc3RUaW1lKTsKKyAg
ICByZXR1cm4gUGVyZm9ybWFuY2VFbnRyeTo6c3RhcnRUaW1lKCk7Cit9CisKK2RvdWJsZSBQZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nOjpkdXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJl
c3BvbnNlRW5kKCkgLSBzdGFydFRpbWUoKTsKK30KKwogZG91YmxlIFBlcmZvcm1hbmNlUmVzb3Vy
Y2VUaW1pbmc6OmZldGNoU3RhcnQoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHJlZGlyZWN0cy4KLSAgICByZXR1cm4gKHN0YXJ0
VGltZSgpKTsKKyAgICBpZiAobV9sYXN0UmVkaXJlY3RSZXBvcnRUaW1lKQorICAgICAgICByZXR1
cm4gbW9ub3RvbmljVGltZVRvRG9jdW1lbnRNaWxsaXNlY29uZHMobV9yZXF1ZXN0aW5nRG9jdW1l
bnQuZ2V0KCksIG1fdGltaW5nLT5yZXF1ZXN0VGltZSk7CisgICAgcmV0dXJuIChQZXJmb3JtYW5j
ZUVudHJ5OjpzdGFydFRpbWUoKSk7CiB9CiAKIGRvdWJsZSBQZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nOjpkb21haW5Mb29rdXBTdGFydCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCmluZGV4IGVkMjQ0OTJjMzU1MDEwYThiY2YwNGI3
ZWMzMjdiODgyZjhjMGEyZDguLmU4NzEwYjFlYjkyYzIwYzMzNzRlZjM2ODE0MjEwZjkzZjNjNTE2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWlu
Zy5oCkBAIC00OSw5ICs0OSw5IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKIGNsYXNzIFBl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcgOiBwdWJsaWMgUGVyZm9ybWFuY2VFbnRyeSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZz4gY3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhdG9yVHlwZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgZG91YmxlIGlu
aXRpYXRpb25UaW1lLCBkb3VibGUgZmluaXNoVGltZSwgRG9jdW1lbnQqIHJlcXVlc3RpbmdEb2N1
bWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nPiBj
cmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JUeXBlLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUg
aW5pdGlhdGlvblRpbWUsIGRvdWJsZSBsYXN0UmVkaXJlY3RSZXBvcnRUaW1lLCBkb3VibGUgZmlu
aXNoVGltZSwgRG9jdW1lbnQqIHJlcXVlc3RpbmdEb2N1bWVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZyhpbml0aWF0b3JUeXBl
LCByZXF1ZXN0LCByZXNwb25zZSwgaW5pdGlhdGlvblRpbWUsIGZpbmlzaFRpbWUsIHJlcXVlc3Rp
bmdEb2N1bWVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcoaW5pdGlhdG9yVHlwZSwgcmVxdWVzdCwgcmVzcG9uc2UsIGluaXRpYXRpb25U
aW1lLCBsYXN0UmVkaXJlY3RSZXBvcnRUaW1lLCBmaW5pc2hUaW1lLCByZXF1ZXN0aW5nRG9jdW1l
bnQpKTsKICAgICB9CiAKICAgICBBdG9taWNTdHJpbmcgaW5pdGlhdG9yVHlwZSgpIGNvbnN0OwpA
QCAtNjksMTUgKzY5LDE4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgcmVzcG9uc2VFbmQoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Jlc291cmNlKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
ZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZyhjb25zdCBBdG9taWNTdHJpbmcmIGluaXRhdG9yVHlwZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSBpbml0
aWF0aW9uVGltZSwgZG91YmxlIGZpbmlzaFRpbWUsIERvY3VtZW50Kik7CisgICAgUGVyZm9ybWFu
Y2VSZXNvdXJjZVRpbWluZyhjb25zdCBBdG9taWNTdHJpbmcmIGluaXRhdG9yVHlwZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSBpbml0aWF0
aW9uVGltZSwgZG91YmxlIGxhc3RSZWRpcmVjdFJlcG9ydFRpbWUsIGRvdWJsZSBmaW5pc2hUaW1l
LCBEb2N1bWVudCopOwogICAgIH5QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKCk7CiAKICAgICBk
b3VibGUgcmVzb3VyY2VUaW1lVG9Eb2N1bWVudE1pbGxpc2Vjb25kcyhpbnQgZGVsdGFNaWxsaXNl
Y29uZHMpIGNvbnN0OwogCiAgICAgQXRvbWljU3RyaW5nIG1faW5pdGlhdG9yVHlwZTsKICAgICBS
ZWZQdHI8UmVzb3VyY2VMb2FkVGltaW5nPiBtX3RpbWluZzsKKyAgICBkb3VibGUgbV9sYXN0UmVk
aXJlY3RSZXBvcnRUaW1lOwogICAgIGRvdWJsZSBtX2ZpbmlzaFRpbWU7CiAgICAgYm9vbCBtX2Rp
ZFJldXNlQ29ubmVjdGlvbjsKICAgICBib29sIG1fc2hvdWxkUmVwb3J0RGV0YWlsczsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhMzdjZjgzNmVjMmIzM2VhN2JmZmZlMTI2YjI1YzRkNDg2NTQyNzQxLi5kMTMzYWFiMmM4MzQy
Y2YwYmQ5MDZlYzEwNDA1NjJlMTVhM2Y3ZTZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMt
MDEtMTQgIFBhbiBEZW5nICA8cGFuLmRlbmdAaW50ZWwuY29tPgorCisgICAgICAgIFtSZXNvdXJj
ZSBUaW1pbmddVzNDIHN0eWxlIHRlc3QgY2FzZXMgZm9yIFJlc291cmNlIFRpbWluZyByZWRpcmVj
dFN0YXJ0IHJlZGlyZWN0RW5kIGZpZWxkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODY3LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZXNlIGNhc2VzIHRlc3QgcmVkaXJlY3RTdGFydCBhbmQgcmVk
aXJlY3RFbmQgaW4gc2NlbmFyaW8gb2YgY3Jvc3Mtb3JpZ2luLCAKKyAgICAgICAgc2FtZS1vcmln
aW4gYW5kIHRpbWluZy1hbGxvd2VkIGNyb3NzLW9yaWdpbi4gU2tpcHBlZCBjdXJyZW50bHkgYmVj
YXVzZSB0aW1pbmcgZW50cmllcyBmb3IgCisgICAgICAgIGlmcmFtZXMgYXJlIG5vdCBwb3B1bGF0
ZWQgeWV0LiAKKworICAgICAgICAqIGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9J
bnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3JpZ2luX3Jl
ZGlyZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93M2Mvd2Vi
cGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWlu
Z19jcm9zc19vcmlnaW5fcmVkaXJlY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291
cmNlX3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3Rfd2l0aF90aW1pbmdfYWxsb3dfb3JpZ2lu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9z
dWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9z
c19vcmlnaW5fcmVkaXJlY3Rfd2l0aF90aW1pbmdfYWxsb3dfb3JpZ2luLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJj
ZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfc2FtZV9vcmlnaW5fcmVkaXJlY3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Np
b24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX3NhbWVfb3JpZ2lu
X3JlZGlyZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMTQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBDaGFuZ2UgTWVkaWFTdHJlYW06
OnJlYWR5U3RhdGUgdG8gYW4gYm9vbGVhbiBhdHRyaWJ1dGUgY2FsbGVkIGVuZGVkLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVs
L3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJl
Y3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJt
aXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9zc19v
cmlnaW5fcmVkaXJlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZmNiYjU4NTNhZDI5MGY4
NmI0Zjg3MWU0MmQxNjI3Njc5YTdhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rl
c3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxOSBAQAorRGVzY3JpcHRpb24NCisNCitUaGlzIHRlc3QgdmFsaWRhdGVzIHRoZSB2
YWx1ZXMgaW4gcmVzb3VyY2UgdGltaW5nIGZvciBhIGNyb3NzLW9yaWdpbiBzZXJ2ZXIgc2lkZSBy
ZWRpcmVjdC4NCisNCisNCisNCitQQVNTIFN0YXJ0aW5nIGRvY3VtZW50LmxvY2F0aW9uLmhvc3Ru
YW1lIGlzIGNvcnJlY3QgKDEyNy4wLjAuMTo4MDAwKSANCitQQVNTIHJlZGlyZWN0U3RhcnQgc2hv
dWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIHJlZGlyZWN0RW5kIHNo
b3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyBkb21haW5Mb29rdXBT
dGFydCBzaG91bGQgYmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIA0KK1BBU1MgZG9tYWlu
TG9va3VwRW5kIHNob3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyBj
b25uZWN0U3RhcnQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNT
IGNvbm5lY3RFbmQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNT
IHJlcXVlc3RTdGFydCBzaG91bGQgYmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIA0KK1BB
U1MgcmVzcG9uc2VTdGFydCBzaG91bGQgYmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIA0K
K1BBU1Mgc2VjdXJlQ29ubmVjdGlvblN0YXJ0IHNob3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiBy
ZWRpcmVjdCEgDQorUEFTUyBmZXRjaFN0YXJ0IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMCBpbiBj
cm9zcy1vcmlnaW4gcmVkaXJlY3QhIA0KK1BBU1MgcmVzcG9uc2VFbmQgc2hvdWxkIGJlIGdyZWF0
ZXIgdGhhbiAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorDQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNl
LXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3QuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNv
dXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3JpZ2luX3JlZGlyZWN0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2I4ZGVmZWM5NzliNWIwNTgzODAwNDQ2NWZiZmZlMGQyZjM5MGI4MQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3Vi
bWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfY3Jvc3Nf
b3JpZ2luX3JlZGlyZWN0Lmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFET0NUWVBFIEhUTUw+DQor
PGh0bWw+DQorICAgIDxoZWFkPg0KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+DQor
ICAgICAgICA8dGl0bGU+cmVzb3VyY2UgdGltaW5nIGluZm9ybWF0aW9uIGZvciBjcm9zcy1vcmln
aW4gcmVkaXJlY3Q8L3RpdGxlPg0KKyAgICAgICAgPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJJ
bnRlbCIgaHJlZj0iaHR0cDovL3d3dy5pbnRlbC5jb20vIiAvPg0KKyAgICAgICAgPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9yZXNvdXJjZS10aW1pbmcvI3BlcmZv
cm1hbmNlcmVzb3VyY2V0aW1pbmciLz4NCisgICAgICAgIDxzY3JpcHQgc3JjPSIvdzNjL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3cz
Yy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii93M2Mvd2VicGVyZi9yZXNvdXJjZXMvd2VicGVyZnRlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4NCisgICAgICAgIDxzY3JpcHQgc3JjPSIvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL3dl
YnBlcmZ0ZXN0aGFybmVzc2V4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+DQorDQorICAgICAgICA8c2Ny
aXB0Pg0KKyAgICAgICAgICAgDQorICAgICAgICAgICAgc2V0dXAoe2V4cGxpY2l0X2RvbmU6IHRy
dWV9KTsNCisgICAgICAgICAgICB2YXIgcGFnZU9yaWdpbiA9ICIxMjcuMC4wLjE6ODAwMCI7DQor
ICAgICAgICAgICAgdmFyIGNyb3NzT3JpZ2luID0gImxvY2FsaG9zdDo4MDAwIjsNCisgICAgICAg
ICAgICBmdW5jdGlvbiBvbmxvYWRfdGVzdCgpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAg
ICAgICB2YXIgY29udGV4dCA9IG5ldyBQZXJmb3JtYW5jZUNvbnRleHQocGVyZm9ybWFuY2UpOw0K
KyAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBjb250ZXh0LmdldEVudHJpZXNCeU5hbWUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lQ29udGV4dCIpLnNyYywgInJlc291cmNlIilbMF07
DQorDQorICAgICAgICAgICAgICAgIHRlc3RfZXF1YWxzKGVudHJ5LnJlZGlyZWN0U3RhcnQsIDAs
ICJyZWRpcmVjdFN0YXJ0IHNob3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsN
CisgICAgICAgICAgICAgICAgdGVzdF9lcXVhbHMoZW50cnkucmVkaXJlY3RFbmQsIDAsICJyZWRp
cmVjdEVuZCBzaG91bGQgYmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAg
ICAgICAgICAgIHRlc3RfZXF1YWxzKGVudHJ5LmRvbWFpbkxvb2t1cFN0YXJ0LCAwLCAiZG9tYWlu
TG9va3VwU3RhcnQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAg
ICAgICAgICAgICAgICB0ZXN0X2VxdWFscyhlbnRyeS5kb21haW5Mb29rdXBFbmQsIDAsICJkb21h
aW5Mb29rdXBFbmQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAg
ICAgICAgICAgICAgICB0ZXN0X2VxdWFscyhlbnRyeS5jb25uZWN0U3RhcnQsIDAsICJjb25uZWN0
U3RhcnQgc2hvdWxkIGJlIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAg
ICAgICAgICB0ZXN0X2VxdWFscyhlbnRyeS5jb25uZWN0RW5kLCAwLCAiY29ubmVjdEVuZCBzaG91
bGQgYmUgMCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIHRl
c3RfZXF1YWxzKGVudHJ5LnJlcXVlc3RTdGFydCwgMCwgInJlcXVlc3RTdGFydCBzaG91bGQgYmUg
MCBpbiBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAgIHRlc3RfZXF1
YWxzKGVudHJ5LnJlc3BvbnNlU3RhcnQsIDAsICJyZXNwb25zZVN0YXJ0IHNob3VsZCBiZSAwIGlu
IGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAgdGVzdF9lcXVhbHMo
ZW50cnkuc2VjdXJlQ29ubmVjdGlvblN0YXJ0LCAwLCAic2VjdXJlQ29ubmVjdGlvblN0YXJ0IHNo
b3VsZCBiZSAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAg
dGVzdF9ncmVhdGVyX3RoYW4oZW50cnkuZmV0Y2hTdGFydCwgMCwgImZldGNoU3RhcnQgc2hvdWxk
IGJlIGdyZWF0ZXIgdGhhbiAwIGluIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAg
ICAgICAgICAgdGVzdF9ncmVhdGVyX3RoYW4oZW50cnkucmVzcG9uc2VFbmQsIDAsICJyZXNwb25z
ZUVuZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAgaW4gY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIp
Ow0KKyAgICAgICAgICAgICAgICBkb25lKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgPC9z
Y3JpcHQ+DQorDQorICAgIDwvaGVhZD4NCisgICAgPGJvZHk+DQorICAgICAgICA8aDE+RGVzY3Jp
cHRpb248L2gxPg0KKyAgICAgICAgPHA+VGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUgdmFsdWVzIGlu
IHJlc291cmNlIHRpbWluZyBmb3IgYSBjcm9zcy1vcmlnaW4gc2VydmVyIHNpZGUgcmVkaXJlY3Qu
PC9wPg0KKyAgICAgICAgPGlmcmFtZSBpZD0iZnJhbWVDb250ZXh0IiBzcmM9IiIgc3R5bGU9Indp
ZHRoOiAyNTBweDsgaGVpZ2h0OiAyNTBweDsiPjwvaWZyYW1lPg0KKyAgICAgICAgPHNjcmlwdD4N
CisgICAgICAgICAgICB0ZXN0X2VxdWFscyhkb2N1bWVudC5sb2NhdGlvbi5ob3N0LCBwYWdlT3Jp
Z2luLCAnU3RhcnRpbmcgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgaXMgY29ycmVjdCAoJyAr
IHBhZ2VPcmlnaW4gKyAnKScpOw0KKw0KKyAgICAgICAgICAgIHZhciBkZXN0VXJsID0gJ2h0dHA6
Ly8nICsgcGFnZU9yaWdpbiArICcvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL3JlZGlyZWN0LnBocCc7
DQorICAgICAgICAgICAgZGVzdFVybCArPSAnP2xvY2F0aW9uPWh0dHA6Ly8nICsgY3Jvc3NPcmln
aW4gKyAiL3czYy93ZWJwZXJmL3Jlc291cmNlcy9ibGFua19wYWdlX2dyZWVuLmh0bSI7DQorDQor
ICAgICAgICAgICAgdmFyIGZyYW1lQ29udGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
cmFtZUNvbnRleHQiKTsNCisgICAgICAgICAgICBmcmFtZUNvbnRleHQub25sb2FkID0gb25sb2Fk
X3Rlc3Q7DQorICAgICAgICAgICAgZnJhbWVDb250ZXh0LnNyYyA9IGRlc3RVcmw7DQorICAgICAg
ICA8L3NjcmlwdD4NCisgICAgPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGlt
aW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdF93aXRoX3RpbWlu
Z19hbGxvd19vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mv
d2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3Rp
bWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3Rfd2l0aF90aW1pbmdfYWxsb3dfb3JpZ2luLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYzZkNjMyYmNmYzJhYzQwYWQ3NmJlYThiZDk0NjE0ZjBjYjM0
ZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVy
Zi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19j
cm9zc19vcmlnaW5fcmVkaXJlY3Rfd2l0aF90aW1pbmdfYWxsb3dfb3JpZ2luLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEyIEBACitEZXNjcmlwdGlvbg0KKw0KK1RoaXMgdGVzdCB2YWxpZGF0ZXMg
dGhlIHZhbHVlcyBpbiByZXNvdXJjZSB0aW1pbmcgZm9yIGEgdGltaW5nIGFsbG93ZWQgY3Jvc3Mt
b3JpZ2luIHNlcnZlciBzaWRlIHJlZGlyZWN0Lg0KKw0KKw0KKw0KK1BBU1MgU3RhcnRpbmcgZG9j
dW1lbnQubG9jYXRpb24uaG9zdG5hbWUgaXMgY29ycmVjdCAoMTI3LjAuMC4xOjgwMDApIA0KK1BB
U1MgcmVkaXJlY3RTdGFydCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAgaW4gdGltaW5nIGFsbG93
ZWQgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIHJlZGlyZWN0U3RhcnQgc2hvdWxkIGJl
IGVxdWFsIHRvIHN0YXJ0VGltZSBpbiB0aW1pbmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4gcmVkaXJl
Y3QhIA0KK1BBU1MgcmVkaXJlY3RFbmQgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiByZWRpcmVjdFN0
YXJ0IGluIHRpbWluZyBhbGxvd2VkIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEgDQorUEFTUyBmZXRj
aFN0YXJ0IHNob3VsZCBiZSBubyBsZXNzIHRoYW4gcmVkaXJlY3RFbmQgaW4gdGltaW5nIGFsbG93
ZWQgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISANCisNCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rl
c3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdF93aXRoX3RpbWluZ19hbGxv
d19vcmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlz
c2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfY3Jvc3Nfb3Jp
Z2luX3JlZGlyZWN0X3dpdGhfdGltaW5nX2FsbG93X29yaWdpbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2
ZTgzZDI1ZTRmOTc1NGIzNWQwZGFkMTIyMjg3NWIxN2Y0NzgwNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVz
b3VyY2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdF93
aXRoX3RpbWluZ19hbGxvd19vcmlnaW4uaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUg
SFRNTD4NCis8aHRtbD4NCisgICAgPGhlYWQ+DQorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCIgLz4NCisgICAgICAgIDx0aXRsZT5yZXNvdXJjZSB0aW1pbmcgaW5mb3JtYXRpb24gZm9yIHRp
bWluZyBhbGxvd2VkIGNyb3NzLW9yaWdpbiByZWRpcmVjdDwvdGl0bGU+DQorICAgICAgICA8bGlu
ayByZWw9ImF1dGhvciIgdGl0bGU9IkludGVsIiBocmVmPSJodHRwOi8vd3d3LmludGVsLmNvbS8i
IC8+DQorICAgICAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L3Jlc291cmNlLXRpbWluZy8jcGVyZm9ybWFuY2VyZXNvdXJjZXRpbWluZyIvPg0KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii93M2MvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4NCisg
ICAgICAgIDxzY3JpcHQgc3JjPSIvdzNjL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+DQorICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy93ZWJwZXJmL3Jlc291cmNlcy93
ZWJwZXJmdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii93
M2Mvd2VicGVyZi9yZXNvdXJjZXMvd2VicGVyZnRlc3RoYXJuZXNzZXh0ZW5zaW9uLmpzIj48L3Nj
cmlwdD4NCisNCisgICAgICAgIDxzY3JpcHQ+DQorICAgICAgICAgICANCisgICAgICAgICAgICBz
ZXR1cCh7ZXhwbGljaXRfZG9uZTogdHJ1ZX0pOw0KKyAgICAgICAgICAgIHZhciBwYWdlT3JpZ2lu
ID0gIjEyNy4wLjAuMTo4MDAwIjsNCisgICAgICAgICAgICB2YXIgY3Jvc3NPcmlnaW4gPSAibG9j
YWxob3N0OjgwMDAiOw0KKyAgICAgICAgICAgIGZ1bmN0aW9uIG9ubG9hZF90ZXN0KCkNCisgICAg
ICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhciBjb250ZXh0ID0gbmV3IFBlcmZvcm1hbmNl
Q29udGV4dChwZXJmb3JtYW5jZSk7DQorICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IGNvbnRl
eHQuZ2V0RW50cmllc0J5TmFtZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWVDb250ZXh0
Iikuc3JjLCAicmVzb3VyY2UiKVswXTsNCisNCisgICAgICAgICAgICAgICAgdGVzdF9ncmVhdGVy
X3RoYW4oZW50cnkucmVkaXJlY3RTdGFydCwgMCwgInJlZGlyZWN0U3RhcnQgc2hvdWxkIGJlIGdy
ZWF0ZXIgdGhhbiAwIGluIHRpbWluZyBhbGxvd2VkIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsN
CisgICAgICAgICAgICAgICAgdGVzdF9lcXVhbHMoZW50cnkucmVkaXJlY3RTdGFydCwgZW50cnku
c3RhcnRUaW1lLCAicmVkaXJlY3RTdGFydCBzaG91bGQgYmUgZXF1YWwgdG8gc3RhcnRUaW1lIGlu
IHRpbWluZyBhbGxvd2VkIGNyb3NzLW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAg
ICAgdGVzdF9ub2xlc3NfdGhhbihlbnRyeS5yZWRpcmVjdEVuZCwgZW50cnkucmVkaXJlY3RTdGFy
dCwgInJlZGlyZWN0RW5kIHNob3VsZCBiZSBubyBsZXNzIHRoYW4gcmVkaXJlY3RTdGFydCBpbiB0
aW1pbmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4gcmVkaXJlY3QhIik7DQorICAgICAgICAgICAgICAg
IHRlc3Rfbm9sZXNzX3RoYW4oZW50cnkuZmV0Y2hTdGFydCwgZW50cnkucmVkaXJlY3RFbmQsICJm
ZXRjaFN0YXJ0IHNob3VsZCBiZSBubyBsZXNzIHRoYW4gcmVkaXJlY3RFbmQgaW4gdGltaW5nIGFs
bG93ZWQgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICBkb25lKCk7
DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgPC9zY3JpcHQ+DQorDQorICAgIDwvaGVhZD4NCisg
ICAgPGJvZHk+DQorICAgICAgICA8aDE+RGVzY3JpcHRpb248L2gxPg0KKyAgICAgICAgPHA+VGhp
cyB0ZXN0IHZhbGlkYXRlcyB0aGUgdmFsdWVzIGluIHJlc291cmNlIHRpbWluZyBmb3IgYSB0aW1p
bmcgYWxsb3dlZCBjcm9zcy1vcmlnaW4gc2VydmVyIHNpZGUgcmVkaXJlY3QuPC9wPg0KKyAgICAg
ICAgPGlmcmFtZSBpZD0iZnJhbWVDb250ZXh0IiBzcmM9IiIgc3R5bGU9IndpZHRoOiAyNTBweDsg
aGVpZ2h0OiAyNTBweDsiPjwvaWZyYW1lPg0KKyAgICAgICAgPHNjcmlwdD4NCisgICAgICAgICAg
ICB0ZXN0X2VxdWFscyhkb2N1bWVudC5sb2NhdGlvbi5ob3N0LCBwYWdlT3JpZ2luLCAnU3RhcnRp
bmcgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgaXMgY29ycmVjdCAoJyArIHBhZ2VPcmlnaW4g
KyAnKScpOw0KKw0KKyAgICAgICAgICAgIHZhciBkZXN0VXJsID0gJ2h0dHA6Ly8nICsgcGFnZU9y
aWdpbiArICcvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL3JlZGlyZWN0LnBocCc7DQorICAgICAgICAg
ICAgZGVzdFVybCArPSAnP2xvY2F0aW9uPWh0dHA6Ly8nICsgY3Jvc3NPcmlnaW4gKyAiL3czYy93
ZWJwZXJmL3Jlc291cmNlcy9ibGFua19wYWdlX2dyZWVuX3dpdGhfYWxsb3dfdGltaW5nLnBocCI7
DQorICAgICAgICAgICAgZGVzdFVybCArPSAnP29yaWdpbj1odHRwOi8vJyArIHBhZ2VPcmlnaW47
DQorDQorICAgICAgICAgICAgdmFyIGZyYW1lQ29udGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJmcmFtZUNvbnRleHQiKTsNCisgICAgICAgICAgICBmcmFtZUNvbnRleHQub25sb2FkID0g
b25sb2FkX3Rlc3Q7DQorICAgICAgICAgICAgZnJhbWVDb250ZXh0LnNyYyA9IGRlc3RVcmw7DQor
ICAgICAgICA8L3NjcmlwdD4NCisgICAgPC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3Vy
Y2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX3NhbWVfb3JpZ2luX3JlZGlyZWN0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9J
bnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9yZXNvdXJjZV90aW1pbmdfc2FtZV9vcmlnaW5fcmVk
aXJlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZmM0ZmU0NDJiY2I3NTdiM2VhYTQ1NTQw
NTI4MGRhMGVkNTEyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5nL3Rlc3RfcmVzb3Vy
Y2VfdGltaW5nX3NhbWVfb3JpZ2luX3JlZGlyZWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitEZXNjcmlwdGlvbg0KKw0KK1RoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHZhbHVlcyBvZiB0
aGUgcmVkaXJlY3RTdGFydC9FbmQgaW4gcmVzb3VyY2UgdGltaW5nIGZvciBhIHNhbWUtb3JpZ2lu
IHNlcnZlciBzaWRlIHJlc291cmNlIHJlZGlyZWN0Lg0KKw0KKw0KKw0KK1BBU1MgU3RhcnRpbmcg
ZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgaXMgY29ycmVjdCAoMTI3LjAuMC4xOjgwMDApIA0K
K1BBU1MgcmVkaXJlY3RTdGFydCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAgaW4gc2FtZS1vcmln
aW4gcmVkaXJlY3QhIA0KK1BBU1MgcmVkaXJlY3RTdGFydCBzaG91bGQgYmUgZXF1YWwgdG8gc3Rh
cnRUaW1lIGluIHNhbWUtb3JpZ2luIHJlZGlyZWN0ISANCitQQVNTIHJlZGlyZWN0RW5kIHNob3Vs
ZCBiZSBubyBsZXNzIHRoYW4gcmVkaXJlY3RTdGFydCBpbiBzYW1lLW9yaWdpbiByZWRpcmVjdCEg
DQorUEFTUyBmZXRjaFN0YXJ0IHNob3VsZCBiZSBubyBsZXNzIHRoYW4gcmVkaXJlY3RFbmQgaW4g
c2FtZS1vcmlnaW4gcmVkaXJlY3QhIA0KKw0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVzdF9y
ZXNvdXJjZV90aW1pbmdfc2FtZV9vcmlnaW5fcmVkaXJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcvdGVz
dF9yZXNvdXJjZV90aW1pbmdfc2FtZV9vcmlnaW5fcmVkaXJlY3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OGE0MmZhMzJiNTQwMDMxMTljN2ZhZWNiYjMxOTYwNjZkZjJiOWU4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jl
c291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19zYW1lX29yaWdpbl9yZWRpcmVjdC5o
dG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MPg0KKzxodG1sPg0KKyAgICA8aGVh
ZD4NCisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPg0KKyAgICAgICAgPHRpdGxlPnJl
ZGlyZWN0U3RhcnQgYW5kIHJlZGlyZWN0RW5kIGluZm9ybWF0aW9uIGluIHNhbWUtb3JpZ2luIHJl
ZGlyZWN0IHJlc291cmNlIHRpbWluZzwvdGl0bGU+DQorICAgICAgICA8bGluayByZWw9ImF1dGhv
ciIgdGl0bGU9IkludGVsIiBocmVmPSJodHRwOi8vd3d3LmludGVsLmNvbS8iIC8+DQorICAgICAg
ICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3Jlc291cmNlLXRp
bWluZy8jcGVyZm9ybWFuY2VyZXNvdXJjZXRpbWluZyIvPg0KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii93M2MvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4NCisgICAgICAgIDxzY3Jp
cHQgc3JjPSIvdzNjL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+DQor
ICAgICAgICA8c2NyaXB0IHNyYz0iL3czYy93ZWJwZXJmL3Jlc291cmNlcy93ZWJwZXJmdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0Pg0KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii93M2Mvd2VicGVyZi9y
ZXNvdXJjZXMvd2VicGVyZnRlc3RoYXJuZXNzZXh0ZW5zaW9uLmpzIj48L3NjcmlwdD4NCisNCisg
ICAgICAgIDxzY3JpcHQ+DQorICAgICAgICAgICANCisgICAgICAgICAgICBzZXR1cCh7ZXhwbGlj
aXRfZG9uZTogdHJ1ZX0pOw0KKyAgICAgICAgICAgIHZhciBwYWdlT3JpZ2luID0gIjEyNy4wLjAu
MTo4MDAwIjsNCisNCisgICAgICAgICAgICBmdW5jdGlvbiBvbmxvYWRfdGVzdCgpDQorICAgICAg
ICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBQZXJmb3JtYW5jZUNv
bnRleHQocGVyZm9ybWFuY2UpOw0KKyAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSBjb250ZXh0
LmdldEVudHJpZXNCeU5hbWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lQ29udGV4dCIp
LnNyYywgInJlc291cmNlIilbMF07DQorDQorICAgICAgICAgICAgICAgIHRlc3RfZ3JlYXRlcl90
aGFuKGVudHJ5LnJlZGlyZWN0U3RhcnQsIDAsICJyZWRpcmVjdFN0YXJ0IHNob3VsZCBiZSBncmVh
dGVyIHRoYW4gMCBpbiBzYW1lLW9yaWdpbiByZWRpcmVjdCEiKTsNCisgICAgICAgICAgICAgICAg
dGVzdF9lcXVhbHMoZW50cnkucmVkaXJlY3RTdGFydCwgZW50cnkuc3RhcnRUaW1lLCAicmVkaXJl
Y3RTdGFydCBzaG91bGQgYmUgZXF1YWwgdG8gc3RhcnRUaW1lIGluIHNhbWUtb3JpZ2luIHJlZGly
ZWN0ISIpOw0KKyAgICAgICAgICAgICAgICB0ZXN0X25vbGVzc190aGFuKGVudHJ5LnJlZGlyZWN0
RW5kLCBlbnRyeS5yZWRpcmVjdFN0YXJ0LCAicmVkaXJlY3RFbmQgc2hvdWxkIGJlIG5vIGxlc3Mg
dGhhbiByZWRpcmVjdFN0YXJ0IGluIHNhbWUtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAg
ICAgICAgICB0ZXN0X25vbGVzc190aGFuKGVudHJ5LmZldGNoU3RhcnQsIGVudHJ5LnJlZGlyZWN0
RW5kLCAiZmV0Y2hTdGFydCBzaG91bGQgYmUgbm8gbGVzcyB0aGFuIHJlZGlyZWN0RW5kIGluIHNh
bWUtb3JpZ2luIHJlZGlyZWN0ISIpOw0KKyAgICAgICAgICAgICAgICBkb25lKCk7DQorICAgICAg
ICAgICAgfQ0KKyAgICAgICAgPC9zY3JpcHQ+DQorDQorICAgIDwvaGVhZD4NCisgICAgPGJvZHk+
DQorICAgICAgICA8aDE+RGVzY3JpcHRpb248L2gxPg0KKyAgICAgICAgPHA+VGhpcyB0ZXN0IHZh
bGlkYXRlcyB0aGUgdmFsdWVzIG9mIHRoZSByZWRpcmVjdFN0YXJ0L0VuZCBpbiByZXNvdXJjZSB0
aW1pbmcgZm9yIGEgc2FtZS1vcmlnaW4gc2VydmVyIHNpZGUgcmVzb3VyY2UgcmVkaXJlY3QuPC9w
Pg0KKyAgICAgICAgPGlmcmFtZSBpZD0iZnJhbWVDb250ZXh0IiBzcmM9IiIgc3R5bGU9IndpZHRo
OiAyNTBweDsgaGVpZ2h0OiAyNTBweDsiPjwvaWZyYW1lPg0KKyAgICAgICAgPHNjcmlwdD4NCisg
ICAgICAgICAgICB0ZXN0X2VxdWFscyhkb2N1bWVudC5sb2NhdGlvbi5ob3N0LCBwYWdlT3JpZ2lu
LCAnU3RhcnRpbmcgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgaXMgY29ycmVjdCAoJyArIHBh
Z2VPcmlnaW4gKyAnKScpOw0KKw0KKyAgICAgICAgICAgIHZhciBkZXN0VXJsID0gJ2h0dHA6Ly8n
ICsgcGFnZU9yaWdpbiArICcvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL3JlZGlyZWN0LnBocCc7DQor
ICAgICAgICAgICAgZGVzdFVybCArPSAnP2xvY2F0aW9uPWh0dHA6Ly8nICsgcGFnZU9yaWdpbiAr
ICIvdzNjL3dlYnBlcmYvcmVzb3VyY2VzL2JsYW5rX3BhZ2VfZ3JlZW4uaHRtIjsNCisNCisgICAg
ICAgICAgICB2YXIgZnJhbWVDb250ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1l
Q29udGV4dCIpOw0KKyAgICAgICAgICAgIGZyYW1lQ29udGV4dC5vbmxvYWQgPSBvbmxvYWRfdGVz
dDsNCisgICAgICAgICAgICBmcmFtZUNvbnRleHQuc3JjID0gZGVzdFVybDsNCisgICAgICAgIDwv
c2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOWFlNjVmMTg0Yjk0NjEzN2IwMmRiMDg3MGZh
M2Y1NzViMDQ2YzEwZS4uZGZhNjAzMjBkNzg3ODcxODAzMTJjNjFjMzFmY2E0MTRjNDc2YTNiNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBA
IC00MTM3LDYgKzQxMzcsOSBAQCB3ZWJraXQub3JnL2IvMTAzOTI3IFsgTWFjIExpbnV4IF0gaHR0
cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNzaW9uL3Jlc291cmNlLXRpbQogd2Via2l0Lm9yZy9i
LzEwMzkyNyBbIFdpbiBdIGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9yZXNvdXJj
ZS10aW1pbmcvaHRtbC90ZXN0X3Jlc291cmNlX3JlZGlyZWN0cy5odG1sIFsgRmFpbHVyZSBUaW1l
b3V0IF0KIHdlYmtpdC5vcmcvYi8xMDM5MjcgaHR0cC90ZXN0cy93M2Mvd2VicGVyZi9zdWJtaXNz
aW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNlX3RpbWluZ19jcm9zc19vcmln
aW5fcmVzb3VyY2VfcmVxdWVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTAzOTI3
IGh0dHAvdGVzdHMvdzNjL3dlYnBlcmYvc3VibWlzc2lvbi9JbnRlbC9yZXNvdXJjZS10aW1pbmcv
dGVzdF9yZXNvdXJjZV90aW1pbmdfdGltaW5nX2FsbG93X2Nyb3NzX29yaWdpbl9yZXNvdXJjZV9y
ZXF1ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5MjcgaHR0cC90ZXN0cy93
M2Mvd2VicGVyZi9zdWJtaXNzaW9uL0ludGVsL3Jlc291cmNlLXRpbWluZy90ZXN0X3Jlc291cmNl
X3RpbWluZ19jcm9zc19vcmlnaW5fcmVkaXJlY3QuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzEwMzkyNyBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3Vy
Y2UtdGltaW5nL3Rlc3RfcmVzb3VyY2VfdGltaW5nX2Nyb3NzX29yaWdpbl9yZWRpcmVjdF93aXRo
X3RpbWluZ19hbGxvd19vcmlnaW4uaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzky
NyBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vSW50ZWwvcmVzb3VyY2UtdGltaW5n
L3Rlc3RfcmVzb3VyY2VfdGltaW5nX3NhbWVfb3JpZ2luX3JlZGlyZWN0Lmh0bWwgWyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzEwMzE0OCBbIFdpbiBNYWMgXSBmYXN0L2ZyYW1lcy9pZnJhbWUt
c2NhbGluZy13aXRoLXNjcm9sbC5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xMDMxNDggWyBMaW9uIF0gZmFzdC9mcmFtZXMvaWZyYW1lLXNjcm9sbGluZy1hdHRy
aWJ1dGUuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>