<?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>32386</bug_id>
          
          <creation_ts>2009-12-10 11:31:18 -0800</creation_ts>
          <short_desc>[V8] Events created in isolated worlds may fire in main world</short_desc>
          <delta_ts>2010-04-22 13:05:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>caseq</cc>
    
    <cc>inferno</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>170475</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-10 11:31:18 -0800</bug_when>
    <thetext>The gist of this change is to add ability to carry world&apos;s context (if necessary) in the event listener. IsolatedWorldContext is an abstraction that does it in an intelligent way. Everything else is just gravy to make it work.

IsolatedWorldContext is like String in that it&apos;s an easy-copy, holds-on-to-a-ref-counted-load type of guy. The load in this case is the SharedPersistent&lt;v8::Context&gt;, which we grab upon instantiation -- if it&apos;s present. If it&apos;s not present, IsolatedWorldContext carries nothing.

At the time of firing an event, IsolatedWorldContext provides the right context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170477</commentid>
    <comment_count>1</comment_count>
      <attachid>44629</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-10 11:42:34 -0800</bug_when>
    <thetext>Created attachment 44629
WIP: Fix isolated worlds event story</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170478</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 11:44:39 -0800</bug_when>
    <thetext>Did you mean to mark this for review?  It has &quot;WIP&quot; in the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170481</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 11:51:47 -0800</bug_when>
    <thetext>+ // FIXME: Move to its own file.

You resolved this FIXME.

This looks good.  I imagine we&apos;ll need to change things slightly when we integrate with the JSC isolated worlds implementation, but we don&apos;t want to block this patch on that effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170483</commentid>
    <comment_count>4</comment_count>
      <attachid>44629</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-10 12:12:39 -0800</bug_when>
    <thetext>Comment on attachment 44629
WIP: Fix isolated worlds event story

Whoops sorry. I put this one up to generate test results on my Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170494</commentid>
    <comment_count>5</comment_count>
      <attachid>44634</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-10 12:58:35 -0800</bug_when>
    <thetext>Created attachment 44634
Fix isolated worlds event story</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170495</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-10 13:00:14 -0800</bug_when>
    <thetext>Attachment 44634 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/bindings/v8/WorldContextHandle.cpp:57:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170498</commentid>
    <comment_count>7</comment_count>
      <attachid>44634</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 13:09:00 -0800</bug_when>
    <thetext>Comment on attachment 44634
Fix isolated worlds event story

 47     WorldContextHandle(WorldToUse worldToUse);
 48     v8::Local&lt;v8::Context&gt; adjustedContext(V8Proxy* proxy) const;

Seems like we can omit the parameter names here.

 44     if (V8IsolatedWorld* world = V8IsolatedWorld::getEntered())
 45         m_context = world-&gt;sharedContext();

Why do we capture the context this way?  The more natural thing seems like proxy-&gt;context()...  I guess the problem is we don&apos;t know what frame we&apos;re in?  The problem case is where the world-&gt;sharedContext() is for a different frame then the one with the event listener.  I&apos;m not sure how to get that to happen at the moment.

 52     if (!m_context || m_context-&gt;get().IsEmpty())
 53         return proxy-&gt;context();

When do we ever get into this case?  It seems if we&apos;re in the UseCurrentWorld case, then m_context shouldn&apos;t be empty...

I guess I don&apos;t understand why we keep WorldToUse m_worldToUse around at all.  It seems like there are two case:

1) We want the current world, so we captured the context on construction.
2) We want the main world, so we figure that out when asked.

What&apos;s the third case where we failed to capture but we still want the current context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170502</commentid>
    <comment_count>8</comment_count>
      <attachid>44634</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 13:19:47 -0800</bug_when>
    <thetext>Comment on attachment 44634
Fix isolated worlds event story

Dimitri explained this to me over chat:

me: there are really three contexts
1) the main world
2) the current world when we contruct
3) the current world when we retrieve

Dimitri: yah!
you said if betterer than I could.

me: i see, we only care about (3) as an optimization to avoid holding handles

===

LGTM once you fix the stylebot nit and the param names.  Thanks so much for working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170509</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-12-10 13:43:37 -0800</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/51960.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44629</attachid>
            <date>2009-12-10 11:42:34 -0800</date>
            <delta_ts>2009-12-10 12:58:30 -0800</delta_ts>
            <desc>WIP: Fix isolated worlds event story</desc>
            <filename>bug-32386-20091210114230.patch</filename>
            <type>text/plain</type>
            <size>29840</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiODUzZTk2Li4yYzkzNGYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTIt
MTAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhdIEV2ZW50cyBjcmVhdGVk
IGluIGlzb2xhdGVkIHdvcmxkcyBtYXkgZmlyZSBpbiBtYWluIHdvcmxkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzODYKKworICAgICAgICBUaGlz
IHRlc3QgaXMgcmVsZXZhbnQgdG8gYm90aCBKU0MgYW5kIFY4IGlzb2xhdGVkIHdvcmxkIGltcGxl
bWVudGF0aW9uLAorICAgICAgICBlbnN1cmluZyB0aGF0IGV2ZW50cyBhcmUgZmlyZWQgaW4gdGhl
IHJpZ2h0IHdvcmxkcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRX
b3JsZC9ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2V2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5LTEyLTA5ICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICBbUXRdIFNraXAg
YSBmYWlsaW5nIHRlc3QgaW50cm9kdWNlZCBpbiByNTE4NzcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZXZlbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZXZlbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0MmY5ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ldmVudHMu
aHRtbApAQCAtMCwwICsxLDEwNyBAQAorPCFET0NUWVBFIGh0bWw+DQorPGh0bWw+DQorPHRpdGxl
PlRlc3QgaG93IGV2ZW50IGhhbmRsZXJzIHdvcmsgd2l0aCBpc29sYXRlZCBXb3JsZHM8L3RpdGxl
Pg0KKzxzY3JpcHQ+DQorDQorLy8gVGhpcyB0ZXN0IGlzIG1lYW5pbmdsZXNzIHdpdGhvdXQgbGF5
b3V0VGVzdENvbnRyb2xsZXIuDQoraWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYg
IXdpbmRvdy5ldmVudFNlbmRlcikNCisgICAgcmV0dXJuOw0KKw0KK2xheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsNCitsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
DQorDQord2luZG93LnRleHRBdHRyaWJ1dGVFdmVudHNDb3VudCA9IDA7DQord2luZG93LnhockV2
ZW50c0NvdW50ID0gMDsNCit3aW5kb3cuZnVuY3Rpb25BdHRyaWJ1dGVFdmVudHNDb3VudCA9IDA7
DQord2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihtZXNzYWdlKQ0K
K3sNCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KK30sIGZhbHNlKTsN
CisNCit3aW5kb3cudGV4dEF0dHJpYnV0ZUV2ZW50c0NhbGxiYWNrID0gZnVuY3Rpb24oKQ0KK3sN
CisgICAgaWYgKHRleHRBdHRyaWJ1dGVFdmVudHNDb3VudCsrKQ0KKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSAiUEFTUyI7DQorfQ0KKw0KK2Z1bmN0
aW9uIG5ld1Rlc3QodGl0bGUpDQorew0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
IikuaW5uZXJIVE1MICs9ICI8YnI+IiArIHRpdGxlICsgIjogIjsNCit9DQorDQorZnVuY3Rpb24g
dGV4dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoKQ0KK3sNCisgICAgd2luZG93LnRleHRBdHRyaWJ1
dGVFdmVudHNDYWxsYmFjayA9IGZ1bmN0aW9uKCkNCisgICAgew0KKyAgICAgICAgaWYgKHdpbmRv
dy5hbHJlYWR5RmFpbGVkKQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9ICJGQUlMIjsNCisgICAgICAgICB3
aW5kb3cuYWxyZWFkeUZhaWxlZCA9IHRydWU7DQorICAgIH0NCisNCisgICAgdmFyIHRlc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOw0KKyAgICB0ZXN0LmlubmVySFRNTCA9ICI8
YnV0dG9uIGlkPSdidXR0b24xJyBvbmNsaWNrPSd0ZXh0QXR0cmlidXRlRXZlbnRzQ2FsbGJhY2so
KSc+PC9idXR0b24+IjsNCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbjEiKS5j
bGljaygpOw0KK30NCisNCitmdW5jdGlvbiBmdW5jdGlvbkF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
KQ0KK3sNCisgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOw0K
KyAgICB2YXIgYnV0dG9uID0gdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJidXR0b24iKSk7DQorICAgIHdpbmRvdy5mdW5jdGlvbkF0dHJpYnV0ZUV2ZW50c0NvdW50ID0g
MDsNCisgICAgYnV0dG9uLm9uY2xpY2sgPSBmdW5jdGlvbigpDQorICAgIHsNCisgICAgICAgIGlm
ICh3aW5kb3cuZnVuY3Rpb25BdHRyaWJ1dGVFdmVudHNDb3VudCsrKQ0KKyAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gIlBBU1MiOw0KKyAgICB9
DQorICAgIGJ1dHRvbi5zdHlsZS5jc3NUZXh0ID0gIndpZHRoOiAzMHB4O2hlaWdodDozMHB4IjsN
CisgICAgYnV0dG9uLmNsaWNrKCk7DQorfQ0KKw0KK2Z1bmN0aW9uIHhockV2ZW50TGlzdGVuZXIo
KQ0KK3sNCisgICAgd2luZG93LnhocldvcmxkID0gMTsNCisgICAgdmFyIGRvbmU7DQorICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsNCisgICAgeGhyLm9wZW4oIkdFVCIsICJhbnlm
aWxlIiwgdHJ1ZSk7DQorICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsN
CisgICAgICAgIGlmIChkb25lKQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIGRvbmUg
PSB0cnVlOw0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRN
TCArPSB3aW5kb3cueGhyV29ybGQgID8gIlBBU1MiIDogIkZBSUwiOw0KKyAgICAgICAgd2luZG93
LnBvc3RNZXNzYWdlKCJkb25lIiwgIioiKTsNCisgICAgfTsNCisgICAgeGhyLnNlbmQobnVsbCk7
DQorfQ0KKw0KK2Z1bmN0aW9uIHJ1blRlc3RJbldvcmxkKHdvcmxkSWQsIGZ1bmNOYW1lKQ0KK3sN
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQo
d29ybGRJZCwgU3RyaW5nKGV2YWwoZnVuY05hbWUpKSArICJcbiIgKyBmdW5jTmFtZSArICIoKTsi
KTsNCit9DQorDQorZnVuY3Rpb24gcnVuVGVzdCgpIA0KK3sNCisgICAgbmV3VGVzdCgiVGV4dCBh
dHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXJzIHNob3VsZCBhbHdheXMgZmlyZSBpbiBtYWluIHdvcmxk
Iik7DQorICAgIHJ1blRlc3RJbldvcmxkKDEsICJ0ZXh0QXR0cmlidXRlRXZlbnRMaXN0ZW5lciIp
Ow0KKyAgICB2YXIgYnV0dG9uMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24xIik7
DQorICAgIGJ1dHRvbjEuY2xpY2soKTsNCisgICAgYnV0dG9uMS5wYXJlbnRFbGVtZW50LnJlbW92
ZUNoaWxkKGJ1dHRvbjEpOw0KKyAgICANCisgICAgbmV3VGVzdCgiRnVuY3Rpb24gYXR0cmlidXRl
IGV2ZW50IGxpc3RlbmVycyBzaG91bGQgZmlyZSBpbiB0aGUgd29ybGQgd2hlcmUgdGhleSB3ZXJl
IGNyZWF0ZWQiKTsNCisgICAgcnVuVGVzdEluV29ybGQoMSwgImZ1bmN0aW9uQXR0cmlidXRlRXZl
bnRMaXN0ZW5lciIpOw0KKyAgICB2YXIgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0Iik7DQorICAgIC8vIExhbmQgc29tZXdoZXJlIG9uIHRoZSBidXR0b24uDQorICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRlc3REaXYub2Zmc2V0TGVmdCArIDUsIHRlc3REaXYub2Zm
c2V0VG9wICsgNSk7DQorICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOw0KKyAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7DQorDQorICAgIG5ld1Rlc3QoIlhIUiBhdHRyaWJ1dGUgZXZlbnQgbGlz
dGVuZXJzIHNob3VsZCBmaXJlIGluIHRoZSB3b3JsZCB3aGVyZSB0aGV5IHdlcmUgY3JlYXRlZCIp
Ow0KKyAgICBydW5UZXN0SW5Xb3JsZCgxLCAieGhyRXZlbnRMaXN0ZW5lciIpOw0KK30NCisNCis8
L3NjcmlwdD4NCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+DQorICAgIDxkaXYgaWQ9InRlc3Qi
PjwvZGl2Pg0KKyAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5
MGFmNTFjLi43NmQ1YjkxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDA5LTEyLTEwICBEaW1pdHJpIEdsYXpr
b3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1Y4XSBFdmVudHMgY3JlYXRlZCBpbiBpc29sYXRlZCB3b3Js
ZHMgbWF5IGZpcmUgaW4gbWFpbiB3b3JsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyMzg2CisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9zZWN1
cml0eS9pc29sYXRlZFdvcmxkL2V2ZW50cy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
IEFkZGVkIFdvcmxkQ29udGV4dEhhbmRsZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIpOiBBZGRlZCBXb3JsZENvbnRleHRIYW5kbGUgcGFyYW1zLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NoYXJlZFBlcnNpc3RlbnQuaDogRml4ZWQgYSBmZXcgc3R5bGUvaW5jbHVkZSBp
c3N1ZXMuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OlY4QWJzdHJhY3RF
dmVudExpc3RlbmVyKTogQWRkZWQgV29ybGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKyAgICAgICAg
KFdlYkNvcmU6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6IEFkanVzdGVk
IGNvbnRleHQgcmV0cmlldmFsIHRvIHVzZSBXb3JsZENvbnRleHRIYW5kbGUuCisgICAgICAgIChX
ZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aW52b2tlRXZlbnRIYW5kbGVyKTogRGl0
dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjp3b3JsZENvbnRleHQpOiBB
ZGRlZCBXb3JsZENvbnRleHRIYW5kbGUgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RXZlbnRMaXN0ZW5lckxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RXZlbnRMaXN0ZW5lckxp
c3Q6OmZpbmRPckNyZWF0ZVdyYXBwZXIpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OExhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2ZW50TGlz
dGVuZXI6OlY4TGF6eUV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4
TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdCk6IEFkanVzdGVkIGNvbnRl
eHQgcmV0cmlldmFsIHRvIHVzZSBXb3JsZENvbnRleHRIYW5kbGUuCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhMYXp5RXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKTogQWRkZWQgV29ybGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJv
eHk6OmNvbnRleHQpOiBSZWZhY3RvcmVkIHRvIHVzZSBtYWluV29ybGRDb250ZXh0KCk7CisgICAg
ICAgIChXZWJDb3JlOjpWOFByb3h5OjptYWluV29ybGRDb250ZXh0KTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjp0b1Y4Q29udGV4dCk6IENoYW5nZWQgdG8gdXNlIFdvcmxkQ29udGV4dEhhbmRs
ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6IEFkZGVkIG1haW5Xb3JsZENvbnRl
eHQgZGVjbC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24pOiBBZGRlZCBhbiBleHRyYSBjaGVjayB0byBhdm9p
ZCBjcmFzaGVzIGR1cmluZyBmcmFtZSB0ZWFyZG93bi4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V29y
a2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIpOiBB
ZGRlZCBXb3JsZENvbnRleHRIYW5kbGUgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2Vy
Q29udGV4dEV2ZW50TGlzdGVuZXI6OmNyZWF0ZSk6IEFkZGVkIFdvcmxkQ29udGV4dEhhbmRsZSBw
YXJhbXMuCisgICAgICAgICogYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcDogQWRk
ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhFdmVudExpc3RlbmVyOjpWOEV2ZW50TGlzdGVuZXIpOiBBZGRl
ZCBXb3JsZENvbnRleHRIYW5kbGUgcGFyYW1zLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKTogQWRkZWQgV29ybGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKwogMjAwOS0x
Mi0wOSAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE5ZDRiYjMuLjczN2VlZjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC04MzgsNiArODM4LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0
RXhlY3V0aW9uUHJveHkuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5k
bGUuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvbnBydW50aW1lLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvbnBydW50aW1lX2ltcGwuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
bnBydW50aW1lX2ludGVybmFsLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKaW5kZXggMDM3MTNiZS4uNWJlYTc4MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
VG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOElzb2xhdGVkV29ybGQuaCIKICNpbmNsdWRl
ICJYU1NBdWRpdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY4LDcgKzY5LDcgQEAg
UGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKE5vZGUqIG5vZGUsIEF0dHJpYnUKICAgICAgICAgc291cmNlVVJMID0gbm9kZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFY4TGF6eUV2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgbm9kZS0+aXNTVkdFbGVt
ZW50KCksIGF0dHItPnZhbHVlKCksIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKKyAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFt
ZSgpLnN0cmluZygpLCBub2RlLT5pc1NWR0VsZW1lbnQoKSwgYXR0ci0+dmFsdWUoKSwgc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VNYWlu
V29ybGQpKTsKIH0KIAogUGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgQXR0cmlidXRlKiBhdHRyKQpAQCAtOTUs
NyArOTYsNyBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRyaQogICAgICAgICBjb2x1bW5OdW1iZXIg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dG9rZW5pemVyKCktPmNvbHVtbk51bWJlcigpOwogICAgIH0K
ICAgICBzb3VyY2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7Ci0gICAg
cmV0dXJuIFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJp
bmcoKSwgZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSwgYXR0ci0+dmFsdWUoKSwg
c291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIHJldHVybiBWOExhenlF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGZyYW1lLT5k
b2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCksIGF0dHItPnZhbHVlKCksIHNvdXJjZVVSTCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBXb3JsZENvbnRleHRIYW5kbGUoVXNlTWFpbldvcmxkKSk7
CiB9CiAKIFN0cmluZyBnZXRFdmVudExpc3RlbmVySGFuZGxlckJvZHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBFdmVudExpc3RlbmVy
KiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2hhcmVkUGVyc2lz
dGVudC5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TaGFyZWRQZXJzaXN0ZW50LmgKaW5kZXggYzEy
MzJhZS4uODgyNWJkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TaGFyZWRQZXJz
aXN0ZW50LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TaGFyZWRQZXJzaXN0ZW50LmgKQEAg
LTMyLDYgKzMyLDggQEAKICNkZWZpbmUgU2hhcmVkUGVyc2lzdGVudF9oCiAKICNpbmNsdWRlIDx2
OC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw3ICs0Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAvLyBvYmplY3QgYW5kIHdoZW4gaXQgc2hvdWxkIG5vIGxvbmdlciBi
ZSBhY2Nlc3NpYmxlIHRoZSBvYmplY3QncwogICAgIC8vIG93bmVyIGNhbiBjbGVhciBpdC4KICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBTaGFyZWRQZXJzaXN0ZW50IDogcHVi
bGljIFdURjo6UmVmQ291bnRlZDxTaGFyZWRQZXJzaXN0ZW50PFQ+ID4geworICAgIGNsYXNzIFNo
YXJlZFBlcnNpc3RlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRQZXJzaXN0ZW50PFQ+ID4g
ewogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXQodjg6OlBlcnNpc3RlbnQ8VD4gdmFsdWUp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggZmE0NjJhZC4uMGY1YjVjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTUwLDEwICs1MCwxMSBAQCBzdGF0
aWMgdm9pZCB3ZWFrRXZlbnRMaXN0ZW5lckNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4sIHZvaWQqIHBhcmFtZXRlcgogICAgIGxpc3RlbmVyLT5kaXNwb3NlTGlzdGVuZXJPYmplY3Qo
KTsKIH0KIAotVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVy
KGJvb2wgaXNBdHRyaWJ1dGUpCitWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6VjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3
b3JsZENvbnRleHQpCiAgICAgOiBFdmVudExpc3RlbmVyKEpTRXZlbnRMaXN0ZW5lclR5cGUpCiAg
ICAgLCBtX2lzV2Vhayh0cnVlKQogICAgICwgbV9pc0F0dHJpYnV0ZShpc0F0dHJpYnV0ZSkKKyAg
ICAsIG1fd29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkKIHsKIH0KIApAQCAtNzUsNyArNzYsNyBA
QCB2b2lkIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFdmVudAogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogCi0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4
dChjb250ZXh0KTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhD
b250ZXh0KGNvbnRleHQsIHdvcmxkQ29udGV4dCgpKTsKICAgICBpZiAodjhDb250ZXh0LklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTUsNyArMTE2LDcgQEAgdm9pZCBWOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcjo6c2V0TGlzdGVuZXJPYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBsaXN0ZW5lcikKIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6Omludm9rZUV2ZW50SGFu
ZGxlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFdmVudCogZXZlbnQsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50KQogewogCi0gICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChjb250ZXh0KTsKKyAgICB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQsIHdvcmxkQ29udGV4dCgpKTsK
ICAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmggYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgKaW5kZXggNjk1YzY2Ny4u
MGFmYmVkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRM
aXN0ZW5lci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIuaApAQCAtMzIsOCArMzIsOCBAQAogI2RlZmluZSBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcl9o
CiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiT3duSGFuZGxlLmgiCi0j
aW5jbHVkZSAiU2hhcmVkUGVyc2lzdGVudC5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRs
ZS5oIgorCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC05Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBkaXNwb3NlTGlzdGVuZXJPYmplY3QoKTsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0ZSk7
CisgICAgICAgIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKGJvb2wgaXNBdHRyaWJ1dGUsIGNvbnN0
IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KIApA
QCAtMTA3LDYgKzEwNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICAvLyBHZXQg
dGhlIHJlY2VpdmVyIG9iamVjdCB0byB1c2UgZm9yIGV2ZW50IGxpc3RlbmVyIGNhbGwuCiAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnZXRSZWNlaXZlck9iamVjdChFdmVudCopOworCisg
ICAgICAgIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV93b3JsZENvbnRleHQ7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEltcGxl
bWVudGF0aW9uIG9mIEV2ZW50TGlzdGVuZXIgZnVuY3Rpb24uCiAgICAgICAgIHZpcnR1YWwgYm9v
bCB2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0cmlidXRlOyB9CkBA
IC0xMjAsNiArMTIzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEluZGlj
YXRlcyBpZiB0aGlzIGlzIGFuIEhUTUwgdHlwZSBsaXN0ZW5lci4KICAgICAgICAgYm9vbCBtX2lz
QXR0cmlidXRlOworCisgICAgICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lckxpc3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhF
dmVudExpc3RlbmVyTGlzdC5oCmluZGV4IDZlNmExZTQuLjUxNDNjY2EgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyTGlzdC5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyTGlzdC5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiUGFzc1JlZlB0ci5oIgogI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAiVjhJc29sYXRlZFdvcmxk
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKQEAgLTk0LDcgKzk1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpZiAod3JhcHBlcikKICAgICAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogCi0gICAgICAgIFBhc3NSZWZQdHI8VjhFdmVudExpc3RlbmVy
PiB3cmFwcGVyUHRyID0gV3JhcHBlclR5cGU6OmNyZWF0ZShvYmplY3QsIGlzQXR0cmlidXRlKTsK
KyAgICAgICAgUGFzc1JlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IHdyYXBwZXJQdHIgPSBXcmFwcGVy
VHlwZTo6Y3JlYXRlKG9iamVjdCwgaXNBdHRyaWJ1dGUsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VD
dXJyZW50V29ybGQpKTsKICAgICAgICAgaWYgKHdyYXBwZXJQdHIpCiAgICAgICAgICAgICBvYmpl
Y3QtPlNldEhpZGRlblZhbHVlKHdyYXBwZXJQcm9wZXJ0eSwgdjg6OkV4dGVybmFsOjpXcmFwKHdy
YXBwZXJQdHIuZ2V0KCkpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExh
enlFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKaW5kZXggODhjNzVkMS4uMTZiMjFkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0zNSwxMyArMzUsMTQgQEAKICNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgogI2luY2x1ZGUg
IlY4UHJveHkuaCIKKyNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKIAogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WOExhenlFdmVu
dExpc3RlbmVyOjpWOExhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBib29sIGlzU1ZHRXZlbnQsIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nIHNvdXJj
ZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCi0gICAgOiBWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lcih0cnVlKQorVjhMYXp5RXZlbnRMaXN0ZW5lcjo6VjhMYXp5RXZlbnRMaXN0
ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgYm9vbCBpc1NWR0V2ZW50LCBjb25zdCBT
dHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKKyAg
ICA6IFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKHRydWUsIHdvcmxkQ29udGV4dCkKICAgICAsIG1f
ZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKICAgICAsIG1faXNTVkdFdmVudChpc1NWR0V2ZW50
KQogICAgICwgbV9jb2RlKGNvZGUpCkBAIC04Myw3ICs4NCw3IEBAIHZvaWQgVjhMYXp5RXZlbnRM
aXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFVzZSB0aGUgb3V0ZXIgc2NvcGUgdG8g
aG9sZCBjb250ZXh0LgotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHBy
b3h5LT5jb250ZXh0KCk7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB3
b3JsZENvbnRleHQoKS5hZGp1c3RlZENvbnRleHQocHJveHkpOwogICAgIC8vIEJhaWwgb3V0IGlm
IHdlIGNhbm5vdCBnZXQgdGhlIGNvbnRleHQuCiAgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5
RXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVy
LmgKaW5kZXggNjk5NDYwYi4uMDc4ZGNmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOExhenlFdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlF
dmVudExpc3RlbmVyLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IC8vIEEgVjhMYXp5RXZlbnRMaXN0ZW5lciBpcyBhbHdheXMgYSBIVE1MIGV2ZW50IGhhbmRsZXIu
CiAgICAgY2xhc3MgVjhMYXp5RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBWOEFic3RyYWN0RXZlbnRM
aXN0ZW5lciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOExhenlF
dmVudExpc3RlbmVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGJvb2wgaXNT
VkdFdmVudCwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Ym9vbCBpc1NWR0V2ZW50LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgV29ybGRDb250ZXh0
SGFuZGxlJiB3b3JsZENvbnRleHQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVjhMYXp5RXZlbnRMaXN0ZW5lcihmdW5jdGlvbk5hbWUsIGlzU1ZHRXZlbnQsIGNv
ZGUsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFY4TGF6eUV2ZW50TGlzdGVuZXIoZnVuY3Rpb25OYW1lLCBpc1NW
R0V2ZW50LCBjb2RlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgd29ybGRD
b250ZXh0KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMYXp5KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVjhMYXp5RXZlbnRMaXN0ZW5l
cihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgYm9vbCBpc1NWR0V2ZW50LCBjb25zdCBTdHJp
bmcmIGNvZGUsIGNvbnN0IFN0cmluZyBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICAgICAgVjhMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uTmFtZSwgYm9vbCBpc1NWR0V2ZW50LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0
cmluZyBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBX
b3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCk7CiAKICAgICAgICAgdmlydHVhbCB2ODo6
TG9jYWw8djg6OlZhbHVlPiBjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50Kik7CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCmluZGV4IDFjNTc3NzQuLmU0ZWU5OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmNwcApAQCAtMTIwNyw4ICsxMjA3LDEzIEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94
eTo6Y29udGV4dCgpCiAgICAgICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pigp
OwogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNvbnRleHQtPmdl
dCgpKTsKICAgICB9CisgICAgcmV0dXJuIG1haW5Xb3JsZENvbnRleHQoKTsKK30KKwordjg6Okxv
Y2FsPHY4OjpDb250ZXh0PiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KCkKK3sKICAgICBpbml0
Q29udGV4dElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5l
dyhtX2NvbnRleHQpOzsKKyAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1f
Y29udGV4dCk7CiB9CiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bWFpbldvcmxk
Q29udGV4dChGcmFtZSogZnJhbWUpCkBAIC0xMjE3LDggKzEyMjIsNyBAQCB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IFY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQoRnJhbWUqIGZyYW1lKQogICAgIGlm
ICghcHJveHkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CiAKLSAg
ICBwcm94eS0+aW5pdENvbnRleHRJZk5lZWRlZCgpOwotICAgIHJldHVybiB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+OjpOZXcocHJveHktPm1fY29udGV4dCk7CisgICAgcmV0dXJuIHByb3h5LT5tYWlu
V29ybGRDb250ZXh0KCk7CiB9CiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6Y3Vy
cmVudENvbnRleHQoKQpAQCAtMTQwNCwxMSArMTQwOCwxMSBAQCB2b2lkIFY4UHJveHk6Omluc3Rh
bGxIaWRkZW5PYmplY3RQcm90b3R5cGUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkK
ICAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0SGlkZGVuVmFsdWUoaGlkZGVuT2JqZWN0UHJvdG90
eXBlU3RyaW5nLCBvYmplY3RQcm90b3R5cGUpOwogfQogCi12ODo6TG9jYWw8djg6OkNvbnRleHQ+
IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQogewogICAgIGlmIChjb250
ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKFY4UHJveHkqIHByb3h5ID0gVjhQcm94
eTo6cmV0cmlldmUoY29udGV4dCkpCi0gICAgICAgICAgICByZXR1cm4gcHJveHktPmNvbnRleHQo
KTsKKyAgICAgICAgICAgIHJldHVybiB3b3JsZENvbnRleHQuYWRqdXN0ZWRDb250ZXh0KHByb3h5
KTsKICAgICB9IGVsc2UgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKSB7CiAgICAgICAg
IGlmIChXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gc3RhdGljX2Nhc3Q8V29y
a2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3JpcHQoKS0+cHJveHkoKSkKICAgICAgICAgICAgIHJl
dHVybiBwcm94eS0+Y29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCBhYjM1MWFmLi5i
MWZkYjgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtNTksNiArNTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFY4RXZlbnRMaXN0ZW5lcjsK
ICAgICBjbGFzcyBWOElzb2xhdGVkV29ybGQ7CisgICAgY2xhc3MgV29ybGRDb250ZXh0SGFuZGxl
OwogCiAgICAgLy8gRklYTUU6IHVzZSBzdGFuZGFyZCBsb2dnaW5nIGZhY2lsaXRpZXMgaW4gV2Vi
Q29yZS4KICAgICB2b2lkIGxvZ0luZm8oRnJhbWUqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgdXJsKTsKQEAgLTMzOSw2ICszNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyBib29sIHNvdXJjZU5hbWUoU3RyaW5nJiByZXN1bHQpOwogCiAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gY29udGV4dCgpOworICAgICAgICB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IG1haW5Xb3JsZENvbnRleHQoKTsKIAogICAgICAgICBib29sIHNldENvbnRl
eHREZWJ1Z0lkKGludCBpZCk7CiAgICAgICAgIHN0YXRpYyBpbnQgY29udGV4dERlYnVnSWQodjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4pOwpAQCAtNDc4LDcgKzQ4MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICB9CiAKIAotICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9W
OENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRs
ZSYgd29ybGRDb250ZXh0KTsKIAogICAgIC8vIFVzZWQgYnkgYW4gaW50ZXJjZXB0b3IgY2FsbGJh
Y2sgdGhhdCBpdCBoYXNuJ3QgZm91bmQgYW55dGhpbmcgdG8KICAgICAvLyBpbnRlcmNlcHQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmluZGV4IDAzNzNhZWUuLmM1NDdjYzcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCkBAIC0xNjgsNyArMTY4LDggQEAgdm9pZCByZXBv
cnRFeGNlcHRpb24oU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCB2ODo6VHJ5Q2F0Y2gmIGV4Y2Vw
dGlvbkNhdGNoZXIpCiAgICAgLy8gRG8gbm90IHJlcG9ydCB0aGUgZXhjZXB0aW9uIGlmIHRoZSBj
dXJyZW50IGV4ZWN1dGlvbiBjb250ZXh0IGlzIERvY3VtZW50IGJlY2F1c2Ugd2UgZG8gbm90IHdh
bnQgdG8gbGVhZCB0byBkdXBsaWNhdGUgZXJyb3IgbWVzc2FnZXMgaW4gdGhlIGNvbnNvbGUuCiAg
ICAgLy8gRklYTUUgKDMxMTcxKTogbmVlZCBiZXR0ZXIgZGVzaWduIHRvIHNvbHZlIHRoZSBkdXBs
aWNhdGUgZXJyb3IgbWVzc2FnZSByZXBvcnRpbmcgcHJvYmxlbS4KICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRTdGF0
ZSk7Ci0gICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgLy8gRHVyaW5nIHRoZSBm
cmFtZSB0ZWFyZG93biwgdGhlcmUgbWF5IG5vdCBiZSBhIHZhbGlkIGNvbnRleHQuCisgICAgaWYg
KGNvbnRleHQgJiYgIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAgICAgIGNvbnRleHQtPnJlcG9y
dEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CiAgICAgZXhj
ZXB0aW9uQ2F0Y2hlci5SZXNldCgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggOGYxNTE0ZC4uZTUzNTZkZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlz
dGVuZXIuY3BwCkBAIC00OCw4ICs0OCw4IEBAIHN0YXRpYyBXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkqIHdvcmtlclByb3h5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAg
cmV0dXJuIHdvcmtlckNvbnRleHQtPnNjcmlwdCgpLT5wcm94eSgpOwogfQogCi1WOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyOjpWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSkKLSAgICA6IFY4RXZlbnRMaXN0
ZW5lcihsaXN0ZW5lciwgaXNJbmxpbmUpCitWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpW
OFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5l
ciwgYm9vbCBpc0lubGluZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQp
CisgICAgOiBWOEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlzSW5saW5lLCB3b3JsZENvbnRleHQp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0
RXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVu
dExpc3RlbmVyLmgKaW5kZXggNjhiZTFlMy4uNDQ4NzQ5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmgKQEAgLTQ0LDE2ICs0NCwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBWOFdvcmtlckNvbnRleHRFdmVu
dExpc3RlbmVyIDogcHVibGljIFY4RXZlbnRMaXN0ZW5lciB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyPiBjcmVhdGUo
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzSW5saW5lKQorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyPiBjcmVhdGUodjg6
OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzSW5saW5lLCBjb25zdCBXb3JsZENv
bnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpc0lu
bGluZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOFdvcmtlckNvbnRleHRF
dmVudExpc3RlbmVyKGxpc3RlbmVyLCBpc0lubGluZSwgd29ybGRDb250ZXh0KSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV2ZW50Kik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVy
bCwgaW50IGxpbmVOdW1iZXIpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgVjhXb3JrZXJDb250
ZXh0RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNJ
bmxpbmUpOworICAgICAgICBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSwgY29uc3QgV29ybGRDb250ZXh0SGFu
ZGxlJiB3b3JsZENvbnRleHQpOwogCiAgICAgICAgIHZpcnR1YWwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gY2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBqc0V2ZW50LCBFdmVudCopOwogICAgICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gZ2V0UmVjZWl2ZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDljZWIzYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorCisjaW5j
bHVkZSAiVjhJc29sYXRlZFdvcmxkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ybGRD
b250ZXh0SGFuZGxlOjpXb3JsZENvbnRleHRIYW5kbGUoV29ybGRUb1VzZSB3b3JsZFRvVXNlKQor
ICAgIDogbV93b3JsZFRvVXNlKHdvcmxkVG9Vc2UpCit7CisgICAgaWYgKHdvcmxkVG9Vc2UgPT0g
VXNlTWFpbldvcmxkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoVjhJc29sYXRlZFdvcmxk
KiB3b3JsZCA9IFY4SXNvbGF0ZWRXb3JsZDo6Z2V0RW50ZXJlZCgpKQorICAgICAgICBtX2NvbnRl
eHQgPSB3b3JsZC0+c2hhcmVkQ29udGV4dCgpOworfQorCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+
IFdvcmxkQ29udGV4dEhhbmRsZTo6YWRqdXN0ZWRDb250ZXh0KFY4UHJveHkqIHByb3h5KSBjb25z
dAoreworICAgIGlmIChtX3dvcmxkVG9Vc2UgPT0gVXNlTWFpbldvcmxkKQorICAgICAgICByZXR1
cm4gcHJveHktPm1haW5Xb3JsZENvbnRleHQoKTsKKyAgICBpZiAoIW1fY29udGV4dCB8fCBtX2Nv
bnRleHQtPmdldCgpLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHByb3h5LT5jb250ZXh0KCk7
CisgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQtPmdldCgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmgg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDc5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdvcmxkQ29udGV4dEhhbmRsZV9oCisjZGVmaW5lIFdvcmxkQ29udGV4dEhhbmRsZV9oCisKKyNp
bmNsdWRlICJTaGFyZWRQZXJzaXN0ZW50LmgiCisKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOFByb3h5Owor
CitlbnVtIFdvcmxkVG9Vc2UgeyBVc2VNYWluV29ybGQsIFVzZUN1cnJlbnRXb3JsZCB9OworCisv
LyBGSVhNRTogTW92ZSB0byBpdHMgb3duIGZpbGUuCisvLyBGSVhNRTogTWFrZSBzbWFydGVyIHdo
ZW4gdGhlcmUgYXJlIG5vIGlzb2xhdGVkIHdvcmxkcy4KK2NsYXNzIFdvcmxkQ29udGV4dEhhbmRs
ZSB7CitwdWJsaWM6CisgICAgV29ybGRDb250ZXh0SGFuZGxlKFdvcmxkVG9Vc2Ugd29ybGRUb1Vz
ZSk7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBhZGp1c3RlZENvbnRleHQoVjhQcm94eSog
cHJveHkpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdvcmxkVG9Vc2UgbV93b3JsZFRvVXNlOwor
ICAgIFJlZlB0cjxTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiA+IG1fY29udGV4dDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdvcmxkQ29udGV4dEhhbmRs
ZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50
TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExp
c3RlbmVyLmNwcAppbmRleCAzNTA0MjRmLi4yNGQ3NTJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDggKzM1
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WOEV2ZW50TGlzdGVuZXI6OlY4RXZlbnRM
aXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNBdHRyaWJ1dGUp
Ci0gICAgOiBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcihpc0F0dHJpYnV0ZSkKK1Y4RXZlbnRMaXN0
ZW5lcjo6VjhFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9v
bCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisg
ICAgOiBWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcihpc0F0dHJpYnV0ZSwgd29ybGRDb250ZXh0KQog
ewogICAgIHNldExpc3RlbmVyT2JqZWN0KGxpc3RlbmVyKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmgKaW5kZXggY2EwMjlhMS4u
ZjlkNTM4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21F
dmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21F
dmVudExpc3RlbmVyLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgLy8gdGhhdCBjYW4gaGFuZGxlIHRoZSBldmVudC4KICAgICBjbGFzcyBWOEV2ZW50TGlzdGVu
ZXIgOiBwdWJsaWMgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VjhFdmVudExpc3RlbmVyPiBjcmVhdGUodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzQXR0cmlidXRlKQorICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxWOEV2ZW50TGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlz
dGVuZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRD
b250ZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4RXZl
bnRMaXN0ZW5lcihsaXN0ZW5lciwgaXNBdHRyaWJ1dGUpKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgVjhFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpc0F0dHJpYnV0ZSwgd29ybGRD
b250ZXh0KSk7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgVjhFdmVudExp
c3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0F0dHJpYnV0ZSk7
CisgICAgICAgIFY4RXZlbnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIs
IGJvb2wgaXNBdHRyaWJ1dGUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0
KTsKIAogICAgICAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBnZXRMaXN0ZW5lckZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44634</attachid>
            <date>2009-12-10 12:58:35 -0800</date>
            <delta_ts>2009-12-10 13:19:47 -0800</delta_ts>
            <desc>Fix isolated worlds event story</desc>
            <filename>bug-32386-20091210125830.patch</filename>
            <type>text/plain</type>
            <size>30167</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyNjM2YmNmLi4xMDEyNDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMTIt
MTAgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbVjhdIEV2ZW50cyBjcmVhdGVk
IGluIGlzb2xhdGVkIHdvcmxkcyBtYXkgZmlyZSBpbiBtYWluIHdvcmxkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzODYKKworICAgICAgICBUaGlz
IHRlc3QgaXMgcmVsZXZhbnQgdG8gYm90aCBKU0MgYW5kIFY4IGlzb2xhdGVkIHdvcmxkIGltcGxl
bWVudGF0aW9uLAorICAgICAgICBlbnN1cmluZyB0aGF0IGV2ZW50cyBhcmUgZmlyZWQgaW4gdGhl
IHJpZ2h0IHdvcmxkcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRX
b3JsZC9ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2V2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5LTEyLTEwICBQ
YXRyaWsgUGVyc3NvbiAgPHBhdHJpay5qLnBlcnNzb25AZXJpY3Nzb24uY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ldmVudHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZmQ1MzEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZXZl
bnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKw0KKw0KK1RleHQgYXR0cmlidXRlIGV2
ZW50IGxpc3RlbmVycyBzaG91bGQgYWx3YXlzIGZpcmUgaW4gbWFpbiB3b3JsZDogUEFTUw0KK0Z1
bmN0aW9uIGF0dHJpYnV0ZSBldmVudCBsaXN0ZW5lcnMgc2hvdWxkIGZpcmUgaW4gdGhlIHdvcmxk
IHdoZXJlIHRoZXkgd2VyZSBjcmVhdGVkOiBQQVNTDQorWEhSIGF0dHJpYnV0ZSBldmVudCBsaXN0
ZW5lcnMgc2hvdWxkIGZpcmUgaW4gdGhlIHdvcmxkIHdoZXJlIHRoZXkgd2VyZSBjcmVhdGVkOiBQ
QVNTClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2V2ZW50cy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2V2ZW50cy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDJmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvZXZlbnRzLmh0bWwK
QEAgLTAsMCArMSwxMDcgQEAKKzwhRE9DVFlQRSBodG1sPg0KKzxodG1sPg0KKzx0aXRsZT5UZXN0
IGhvdyBldmVudCBoYW5kbGVycyB3b3JrIHdpdGggaXNvbGF0ZWQgV29ybGRzPC90aXRsZT4NCis8
c2NyaXB0Pg0KKw0KKy8vIFRoaXMgdGVzdCBpcyBtZWFuaW5nbGVzcyB3aXRob3V0IGxheW91dFRl
c3RDb250cm9sbGVyLg0KK2lmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmICF3aW5k
b3cuZXZlbnRTZW5kZXIpDQorICAgIHJldHVybjsNCisNCitsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7DQorbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKw0K
K3dpbmRvdy50ZXh0QXR0cmlidXRlRXZlbnRzQ291bnQgPSAwOw0KK3dpbmRvdy54aHJFdmVudHND
b3VudCA9IDA7DQord2luZG93LmZ1bmN0aW9uQXR0cmlidXRlRXZlbnRzQ291bnQgPSAwOw0KK3dp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24obWVzc2FnZSkNCit7DQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsNCit9LCBmYWxzZSk7DQorDQor
d2luZG93LnRleHRBdHRyaWJ1dGVFdmVudHNDYWxsYmFjayA9IGZ1bmN0aW9uKCkNCit7DQorICAg
IGlmICh0ZXh0QXR0cmlidXRlRXZlbnRzQ291bnQrKykNCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gIlBBU1MiOw0KK30NCisNCitmdW5jdGlvbiBu
ZXdUZXN0KHRpdGxlKQ0KK3sNCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlu
bmVySFRNTCArPSAiPGJyPiIgKyB0aXRsZSArICI6ICI7DQorfQ0KKw0KK2Z1bmN0aW9uIHRleHRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKCkNCit7DQorICAgIHdpbmRvdy50ZXh0QXR0cmlidXRlRXZl
bnRzQ2FsbGJhY2sgPSBmdW5jdGlvbigpDQorICAgIHsNCisgICAgICAgIGlmICh3aW5kb3cuYWxy
ZWFkeUZhaWxlZCkNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSAiRkFJTCI7DQorICAgICAgICAgd2luZG93
LmFscmVhZHlGYWlsZWQgPSB0cnVlOw0KKyAgICB9DQorDQorICAgIHZhciB0ZXN0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsNCisgICAgdGVzdC5pbm5lckhUTUwgPSAiPGJ1dHRv
biBpZD0nYnV0dG9uMScgb25jbGljaz0ndGV4dEF0dHJpYnV0ZUV2ZW50c0NhbGxiYWNrKCknPjwv
YnV0dG9uPiI7DQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24xIikuY2xpY2so
KTsNCit9DQorDQorZnVuY3Rpb24gZnVuY3Rpb25BdHRyaWJ1dGVFdmVudExpc3RlbmVyKCkNCit7
DQorICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiKTsNCisgICAg
dmFyIGJ1dHRvbiA9IHRlc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0
dG9uIikpOw0KKyAgICB3aW5kb3cuZnVuY3Rpb25BdHRyaWJ1dGVFdmVudHNDb3VudCA9IDA7DQor
ICAgIGJ1dHRvbi5vbmNsaWNrID0gZnVuY3Rpb24oKQ0KKyAgICB7DQorICAgICAgICBpZiAod2lu
ZG93LmZ1bmN0aW9uQXR0cmlidXRlRXZlbnRzQ291bnQrKykNCisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9ICJQQVNTIjsNCisgICAgfQ0KKyAg
ICBidXR0b24uc3R5bGUuY3NzVGV4dCA9ICJ3aWR0aDogMzBweDtoZWlnaHQ6MzBweCI7DQorICAg
IGJ1dHRvbi5jbGljaygpOw0KK30NCisNCitmdW5jdGlvbiB4aHJFdmVudExpc3RlbmVyKCkNCit7
DQorICAgIHdpbmRvdy54aHJXb3JsZCA9IDE7DQorICAgIHZhciBkb25lOw0KKyAgICB2YXIgeGhy
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7DQorICAgIHhoci5vcGVuKCJHRVQiLCAiYW55ZmlsZSIs
IHRydWUpOw0KKyAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7DQorICAg
ICAgICBpZiAoZG9uZSkNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICBkb25lID0gdHJ1
ZTsNCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0g
d2luZG93LnhocldvcmxkICA/ICJQQVNTIiA6ICJGQUlMIjsNCisgICAgICAgIHdpbmRvdy5wb3N0
TWVzc2FnZSgiZG9uZSIsICIqIik7DQorICAgIH07DQorICAgIHhoci5zZW5kKG51bGwpOw0KK30N
CisNCitmdW5jdGlvbiBydW5UZXN0SW5Xb3JsZCh3b3JsZElkLCBmdW5jTmFtZSkNCit7DQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKHdvcmxk
SWQsIFN0cmluZyhldmFsKGZ1bmNOYW1lKSkgKyAiXG4iICsgZnVuY05hbWUgKyAiKCk7Iik7DQor
fQ0KKw0KK2Z1bmN0aW9uIHJ1blRlc3QoKSANCit7DQorICAgIG5ld1Rlc3QoIlRleHQgYXR0cmli
dXRlIGV2ZW50IGxpc3RlbmVycyBzaG91bGQgYWx3YXlzIGZpcmUgaW4gbWFpbiB3b3JsZCIpOw0K
KyAgICBydW5UZXN0SW5Xb3JsZCgxLCAidGV4dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIiKTsNCisg
ICAgdmFyIGJ1dHRvbjEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uMSIpOw0KKyAg
ICBidXR0b24xLmNsaWNrKCk7DQorICAgIGJ1dHRvbjEucGFyZW50RWxlbWVudC5yZW1vdmVDaGls
ZChidXR0b24xKTsNCisgICAgDQorICAgIG5ld1Rlc3QoIkZ1bmN0aW9uIGF0dHJpYnV0ZSBldmVu
dCBsaXN0ZW5lcnMgc2hvdWxkIGZpcmUgaW4gdGhlIHdvcmxkIHdoZXJlIHRoZXkgd2VyZSBjcmVh
dGVkIik7DQorICAgIHJ1blRlc3RJbldvcmxkKDEsICJmdW5jdGlvbkF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIiKTsNCisgICAgdmFyIHRlc3REaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dCIpOw0KKyAgICAvLyBMYW5kIHNvbWV3aGVyZSBvbiB0aGUgYnV0dG9uLg0KKyAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyh0ZXN0RGl2Lm9mZnNldExlZnQgKyA1LCB0ZXN0RGl2Lm9mZnNldFRv
cCArIDUpOw0KKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsNCisgICAgZXZlbnRTZW5kZXIu
bW91c2VVcCgpOw0KKw0KKyAgICBuZXdUZXN0KCJYSFIgYXR0cmlidXRlIGV2ZW50IGxpc3RlbmVy
cyBzaG91bGQgZmlyZSBpbiB0aGUgd29ybGQgd2hlcmUgdGhleSB3ZXJlIGNyZWF0ZWQiKTsNCisg
ICAgcnVuVGVzdEluV29ybGQoMSwgInhockV2ZW50TGlzdGVuZXIiKTsNCit9DQorDQorPC9zY3Jp
cHQ+DQorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPg0KKyAgICA8ZGl2IGlkPSJ0ZXN0Ij48L2Rp
dj4NCisgICAgPGRpdiBpZD0ibG9nIj48L2Rpdj4NCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk0NzEw
YS4uZjExYTM4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAwOS0xMi0xMCAgRGltaXRyaSBHbGF6a292ICA8
ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtWOF0gRXZlbnRzIGNyZWF0ZWQgaW4gaXNvbGF0ZWQgd29ybGRzIG1h
eSBmaXJlIGluIG1haW4gd29ybGQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMjM4NgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvc2VjdXJpdHkv
aXNvbGF0ZWRXb3JsZC9ldmVudHMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRl
ZCBXb3JsZENvbnRleHRIYW5kbGUuCisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKTogQWRkZWQgV29ybGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TaGFyZWRQZXJzaXN0ZW50Lmg6IEZpeGVkIGEgZmV3IHN0eWxlL2luY2x1ZGUgaXNzdWVz
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpWOEFic3RyYWN0RXZlbnRM
aXN0ZW5lcik6IEFkZGVkIFdvcmxkQ29udGV4dEhhbmRsZSBwYXJhbXMuCisgICAgICAgIChXZWJD
b3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBBZGp1c3RlZCBjb250
ZXh0IHJldHJpZXZhbCB0byB1c2UgV29ybGRDb250ZXh0SGFuZGxlLgorICAgICAgICAoV2ViQ29y
ZTo6VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6Omludm9rZUV2ZW50SGFuZGxlcik6IERpdHRvLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6d29ybGRDb250ZXh0KTogQWRkZWQg
V29ybGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEV2ZW50
TGlzdGVuZXJMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50TGlzdGVuZXJMaXN0Ojpm
aW5kT3JDcmVhdGVXcmFwcGVyKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvdjgvVjhMYXp5
RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOExhenlFdmVudExpc3RlbmVy
OjpWOExhenlFdmVudExpc3RlbmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWOExhenlF
dmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QpOiBBZGp1c3RlZCBjb250ZXh0IHJl
dHJpZXZhbCB0byB1c2UgV29ybGRDb250ZXh0SGFuZGxlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4TGF6eUV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2ZW50TGlz
dGVuZXI6OmNyZWF0ZSk6IEFkZGVkIFdvcmxkQ29udGV4dEhhbmRsZSBwYXJhbXMuCisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5Ojpj
b250ZXh0KTogUmVmYWN0b3JlZCB0byB1c2UgbWFpbldvcmxkQ29udGV4dCgpOworICAgICAgICAo
V2ViQ29yZTo6VjhQcm94eTo6bWFpbldvcmxkQ29udGV4dCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOENvbnRleHQpOiBDaGFuZ2VkIHRvIHVzZSBXb3JsZENvbnRleHRIYW5kbGUuCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOiBBZGRlZCBtYWluV29ybGRDb250ZXh0IGRl
Y2wuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwb3J0RXhjZXB0aW9uKTogQWRkZWQgYW4gZXh0cmEgY2hlY2sgdG8gYXZvaWQgY3Jh
c2hlcyBkdXJpbmcgZnJhbWUgdGVhcmRvd24uCisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3Jr
ZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNv
bnRleHRFdmVudExpc3RlbmVyOjpWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKTogQWRkZWQg
V29ybGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFdvcmtl
ckNvbnRleHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRl
eHRFdmVudExpc3RlbmVyOjpjcmVhdGUpOiBBZGRlZCBXb3JsZENvbnRleHRIYW5kbGUgcGFyYW1z
LgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RXZlbnRMaXN0ZW5lcjo6VjhFdmVudExpc3RlbmVyKTogQWRkZWQgV29y
bGRDb250ZXh0SGFuZGxlIHBhcmFtcy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21FdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50TGlzdGVuZXI6
OmNyZWF0ZSk6IEFkZGVkIFdvcmxkQ29udGV4dEhhbmRsZSBwYXJhbXMuCisKIDIwMDktMTItMTAg
IEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBQYXNzIG1v
cmUgaW5mb3JtYXRpb24gYWJvdXQgYSBwbHVnLWluIHRvIHRoZSBQbHVnaW5IYWx0ZXJEZWxlZ2F0
ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCBkMjJjZjQ4Li40YTM3Yzc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtODM4LDYgKzgzOCw4IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L25wcnVudGltZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbXBs
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L25wcnVudGltZV9pbnRlcm5hbC5oJywKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDAzNzEzYmUu
LjUxZDUzYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cApAQCAtNjgsNyArNjgsNyBAQCBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9kZSwgQXR0cmlidQogICAgICAgICBzb3Vy
Y2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmlu
ZygpLCBub2RlLT5pc1NWR0VsZW1lbnQoKSwgYXR0ci0+dmFsdWUoKSwgc291cmNlVVJMLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIHJldHVybiBWOExhenlFdmVudExpc3RlbmVyOjpj
cmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIG5vZGUtPmlzU1ZHRWxlbWVudCgpLCBh
dHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV29ybGRD
b250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwogfQogCiBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50
TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBBdHRy
aWJ1dGUqIGF0dHIpCkBAIC05NSw3ICs5NSw3IEBAIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0
ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIEF0dHJpCiAg
ICAgICAgIGNvbHVtbk51bWJlciA9IGZyYW1lLT5kb2N1bWVudCgpLT50b2tlbml6ZXIoKS0+Y29s
dW1uTnVtYmVyKCk7CiAgICAgfQogICAgIHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmcoKTsKLSAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0
dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVu
dCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7
CisgICAgcmV0dXJuIFY4TGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUo
KS5zdHJpbmcoKSwgZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSwgYXR0ci0+dmFs
dWUoKSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdvcmxkQ29udGV4dEhh
bmRsZShVc2VNYWluV29ybGQpKTsKIH0KIAogU3RyaW5nIGdldEV2ZW50TGlzdGVuZXJIYW5kbGVy
Qm9keShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBTY3JpcHRTdGF0ZSogc2NyaXB0
U3RhdGUsIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9TaGFyZWRQZXJzaXN0ZW50LmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NoYXJlZFBl
cnNpc3RlbnQuaAppbmRleCBjMTIzMmFlLi44ODI1YmQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NoYXJlZFBlcnNpc3RlbnQuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1No
YXJlZFBlcnNpc3RlbnQuaApAQCAtMzIsNiArMzIsOCBAQAogI2RlZmluZSBTaGFyZWRQZXJzaXN0
ZW50X2gKIAogI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQw
LDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIG9iamVjdCBhbmQgd2hlbiBp
dCBzaG91bGQgbm8gbG9uZ2VyIGJlIGFjY2Vzc2libGUgdGhlIG9iamVjdCdzCiAgICAgLy8gb3du
ZXIgY2FuIGNsZWFyIGl0LgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGNsYXNzIFNo
YXJlZFBlcnNpc3RlbnQgOiBwdWJsaWMgV1RGOjpSZWZDb3VudGVkPFNoYXJlZFBlcnNpc3RlbnQ8
VD4gPiB7CisgICAgY2xhc3MgU2hhcmVkUGVyc2lzdGVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNo
YXJlZFBlcnNpc3RlbnQ8VD4gPiB7CiAgICAgcHVibGljOgogICAgICAgICB2b2lkIHNldCh2ODo6
UGVyc2lzdGVudDxUPiB2YWx1ZSkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAppbmRleCBmYTQ2MmFkLi4wZjViNWM4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcApAQCAt
NTAsMTAgKzUwLDExIEBAIHN0YXRpYyB2b2lkIHdlYWtFdmVudExpc3RlbmVyQ2FsbGJhY2sodjg6
OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyCiAgICAgbGlzdGVuZXItPmRp
c3Bvc2VMaXN0ZW5lck9iamVjdCgpOwogfQogCi1WOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6VjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIoYm9vbCBpc0F0dHJpYnV0ZSkKK1Y4QWJzdHJhY3RFdmVudExp
c3RlbmVyOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcihib29sIGlzQXR0cmlidXRlLCBjb25zdCBX
b3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKICAgICA6IEV2ZW50TGlzdGVuZXIoSlNF
dmVudExpc3RlbmVyVHlwZSkKICAgICAsIG1faXNXZWFrKHRydWUpCiAgICAgLCBtX2lzQXR0cmli
dXRlKGlzQXR0cmlidXRlKQorICAgICwgbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQogewog
fQogCkBAIC03NSw3ICs3Niw3IEBAIHZvaWQgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV2ZW50CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4
Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4
dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29udGV4dCwgd29ybGRDb250ZXh0KCkpOwogICAg
IGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTExNSw3ICsx
MTYsNyBAQCB2b2lkIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyOjpzZXRMaXN0ZW5lck9iamVjdCh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGxpc3RlbmVyKQogdm9pZCBWOEFic3RyYWN0RXZlbnRMaXN0
ZW5lcjo6aW52b2tlRXZlbnRIYW5kbGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV2ZW50KiBldmVudCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQpCiB7CiAKLSAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQpOwor
ICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29udGV4
dCwgd29ybGRDb250ZXh0KCkpOwogICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2
ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0cmFjdEV2ZW50TGlzdGVu
ZXIuaAppbmRleCA2OTVjNjY3Li4wYWZiZWQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEFic3RyYWN0RXZlbnRMaXN0ZW5lci5oCkBAIC0zMiw4ICszMiw4IEBACiAjZGVmaW5lIFY4QWJz
dHJhY3RFdmVudExpc3RlbmVyX2gKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbmNs
dWRlICJPd25IYW5kbGUuaCIKLSNpbmNsdWRlICJTaGFyZWRQZXJzaXN0ZW50LmgiCisjaW5jbHVk
ZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCisKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTk3LDcgKzk3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRpc3Bvc2VMaXN0ZW5lck9i
amVjdCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBWOEFic3RyYWN0RXZlbnRMaXN0ZW5l
cihib29sIGlzQXR0cmlidXRlKTsKKyAgICAgICAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIoYm9v
bCBpc0F0dHJpYnV0ZSwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIHsgfQogCkBAIC0xMDcsNiArMTA3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIC8vIEdldCB0aGUgcmVjZWl2ZXIgb2JqZWN0IHRvIHVzZSBmb3IgZXZlbnQg
bGlzdGVuZXIgY2FsbC4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdldFJlY2VpdmVy
T2JqZWN0KEV2ZW50Kik7CisKKyAgICAgICAgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3Js
ZENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkQ29udGV4dDsgfQorCiAgICAgcHJpdmF0
ZToKICAgICAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgRXZlbnRMaXN0ZW5lciBmdW5jdGlvbi4K
ICAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNBdHRyaWJ1dGU7IH0KQEAgLTEyMCw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgLy8gSW5kaWNhdGVzIGlmIHRoaXMgaXMgYW4gSFRNTCB0eXBlIGxpc3RlbmVy
LgogICAgICAgICBib29sIG1faXNBdHRyaWJ1dGU7CisKKyAgICAgICAgV29ybGRDb250ZXh0SGFu
ZGxlIG1fd29ybGRDb250ZXh0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyTGlzdC5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXJMaXN0LmgKaW5kZXggNmU2YTFlNC4uNTE0
M2NjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXJMaXN0
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXJMaXN0LmgKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21F
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNpbmNs
dWRlICJWOElzb2xhdGVkV29ybGQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEZyYW1lOwpAQCAtOTQsNyArOTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlm
ICh3cmFwcGVyKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKLSAgICAgICAgUGFzc1Jl
ZlB0cjxWOEV2ZW50TGlzdGVuZXI+IHdyYXBwZXJQdHIgPSBXcmFwcGVyVHlwZTo6Y3JlYXRlKG9i
amVjdCwgaXNBdHRyaWJ1dGUpOworICAgICAgICBQYXNzUmVmUHRyPFY4RXZlbnRMaXN0ZW5lcj4g
d3JhcHBlclB0ciA9IFdyYXBwZXJUeXBlOjpjcmVhdGUob2JqZWN0LCBpc0F0dHJpYnV0ZSwgV29y
bGRDb250ZXh0SGFuZGxlKFVzZUN1cnJlbnRXb3JsZCkpOwogICAgICAgICBpZiAod3JhcHBlclB0
cikKICAgICAgICAgICAgIG9iamVjdC0+U2V0SGlkZGVuVmFsdWUod3JhcHBlclByb3BlcnR5LCB2
ODo6RXh0ZXJuYWw6OldyYXAod3JhcHBlclB0ci5nZXQoKSkpOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAppbmRleCA4OGM3NWQxLi4xNmIyMWQ2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDEzICsz
NSwxNCBAQAogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVy
dHlOYW1lLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhh
bmRsZS5oIgogCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVY4TGF6eUV2ZW50TGlzdGVuZXI6OlY4TGF6eUV2ZW50TGlzdGVuZXIoY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGJvb2wgaXNTVkdFdmVudCwgY29uc3QgU3RyaW5nJiBjb2Rl
LCBjb25zdCBTdHJpbmcgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKLSAgICA6IFY4QWJzdHJhY3RFdmVudExpc3RlbmVyKHRydWUpCitWOExhenlFdmVudExpc3Rl
bmVyOjpWOExhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBib29s
IGlzU1ZHRXZlbnQsIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nIHNvdXJjZVVSTCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRs
ZSYgd29ybGRDb250ZXh0KQorICAgIDogVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIodHJ1ZSwgd29y
bGRDb250ZXh0KQogICAgICwgbV9mdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQogICAgICwgbV9p
c1NWR0V2ZW50KGlzU1ZHRXZlbnQpCiAgICAgLCBtX2NvZGUoY29kZSkKQEAgLTgzLDcgKzg0LDcg
QEAgdm9pZCBWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVXNl
IHRoZSBvdXRlciBzY29wZSB0byBob2xkIGNvbnRleHQuCi0gICAgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gdjhDb250ZXh0ID0gcHJveHktPmNvbnRleHQoKTsKKyAgICB2ODo6TG9jYWw8djg6OkNv
bnRleHQ+IHY4Q29udGV4dCA9IHdvcmxkQ29udGV4dCgpLmFkanVzdGVkQ29udGV4dChwcm94eSk7
CiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgY2Fubm90IGdldCB0aGUgY29udGV4dC4KICAgICBpZiAo
djhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TGF6eUV2ZW50TGlzdGVuZXIuaAppbmRleCA2OTk0NjBiLi4wNzhkY2YxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuaApAQCAtNDUsOSArNDUsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gQSBWOExhenlFdmVudExpc3RlbmVyIGlzIGFsd2F5cyBh
IEhUTUwgZXZlbnQgaGFuZGxlci4KICAgICBjbGFzcyBWOExhenlFdmVudExpc3RlbmVyIDogcHVi
bGljIFY4QWJzdHJhY3RFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uTmFtZSwgYm9vbCBpc1NWR0V2ZW50LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBib29sIGlzU1ZHRXZlbnQsIGNvbnN0IFN0cmluZyYgY29kZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOExhenlFdmVudExpc3RlbmVyKGZ1bmN0aW9u
TmFtZSwgaXNTVkdFdmVudCwgY29kZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhMYXp5RXZlbnRMaXN0ZW5l
cihmdW5jdGlvbk5hbWUsIGlzU1ZHRXZlbnQsIGNvZGUsIHNvdXJjZVVSTCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCB3b3JsZENvbnRleHQpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0xhenkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC01Niw3ICs1Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVMaXN0ZW5l
ck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBWOExhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBib29sIGlz
U1ZHRXZlbnQsIGNvbnN0IFN0cmluZyYgY29kZSwgY29uc3QgU3RyaW5nIHNvdXJjZVVSTCwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgICAgICBWOExhenlFdmVudExpc3Rl
bmVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBib29sIGlzU1ZHRXZlbnQsIGNvbnN0IFN0
cmluZyYgY29kZSwgY29uc3QgU3RyaW5nIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKIAog
ICAgICAgICB2aXJ0dWFsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNhbGxMaXN0ZW5lckZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCwg
RXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggMWM1Nzc3NC4uZTRlZTk5ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCkBAIC0xMjA3LDggKzEyMDcsMTMgQEAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBWOFByb3h5Ojpjb250ZXh0KCkKICAgICAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+KCk7CiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+OjpOZXcoY29udGV4dC0+Z2V0KCkpOwogICAgIH0KKyAgICByZXR1cm4gbWFpbldvcmxkQ29u
dGV4dCgpOworfQorCit2ODo6TG9jYWw8djg6OkNvbnRleHQ+IFY4UHJveHk6Om1haW5Xb3JsZENv
bnRleHQoKQorewogICAgIGluaXRDb250ZXh0SWZOZWVkZWQoKTsKLSAgICByZXR1cm4gdjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dCk7OworICAgIHJldHVybiB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+OjpOZXcobV9jb250ZXh0KTsKIH0KIAogdjg6OkxvY2FsPHY4OjpDb250ZXh0
PiBWOFByb3h5OjptYWluV29ybGRDb250ZXh0KEZyYW1lKiBmcmFtZSkKQEAgLTEyMTcsOCArMTIy
Miw3IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChG
cmFtZSogZnJhbWUpCiAgICAgaWYgKCFwcm94eSkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD4oKTsKIAotICAgIHByb3h5LT5pbml0Q29udGV4dElmTmVlZGVkKCk7Ci0gICAg
cmV0dXJuIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhwcm94eS0+bV9jb250ZXh0KTsKKyAg
ICByZXR1cm4gcHJveHktPm1haW5Xb3JsZENvbnRleHQoKTsKIH0KIAogdjg6OkxvY2FsPHY4OjpD
b250ZXh0PiBWOFByb3h5OjpjdXJyZW50Q29udGV4dCgpCkBAIC0xNDA0LDExICsxNDA4LDExIEBA
IHZvaWQgVjhQcm94eTo6aW5zdGFsbEhpZGRlbk9iamVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQogICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXRIaWRkZW5WYWx1
ZShoaWRkZW5PYmplY3RQcm90b3R5cGVTdHJpbmcsIG9iamVjdFByb3RvdHlwZSk7CiB9CiAKLXY4
OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3Y4OjpMb2NhbDx2ODo6Q29udGV4dD4gdG9WOENvbnRleHQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRl
eHQpCiB7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoVjhQ
cm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KSkKLSAgICAgICAgICAgIHJl
dHVybiBwcm94eS0+Y29udGV4dCgpOworICAgICAgICAgICAgcmV0dXJuIHdvcmxkQ29udGV4dC5h
ZGp1c3RlZENvbnRleHQocHJveHkpOwogICAgIH0gZWxzZSBpZiAoY29udGV4dC0+aXNXb3JrZXJD
b250ZXh0KCkpIHsKICAgICAgICAgaWYgKFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogcHJv
eHkgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCktPnNjcmlwdCgpLT5wcm94
eSgpKQogICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94
eS5oCmluZGV4IGFiMzUxYWYuLmIxZmRiODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCkBAIC01OSw2
ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xh
c3MgVjhFdmVudExpc3RlbmVyOwogICAgIGNsYXNzIFY4SXNvbGF0ZWRXb3JsZDsKKyAgICBjbGFz
cyBXb3JsZENvbnRleHRIYW5kbGU7CiAKICAgICAvLyBGSVhNRTogdXNlIHN0YW5kYXJkIGxvZ2dp
bmcgZmFjaWxpdGllcyBpbiBXZWJDb3JlLgogICAgIHZvaWQgbG9nSW5mbyhGcmFtZSosIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtMzM5LDYgKzM0MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgc291cmNlTmFtZShTdHJp
bmcmIHJlc3VsdCk7CiAKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KCk7
CisgICAgICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbWFpbldvcmxkQ29udGV4dCgpOwogCiAg
ICAgICAgIGJvb2wgc2V0Q29udGV4dERlYnVnSWQoaW50IGlkKTsKICAgICAgICAgc3RhdGljIGlu
dCBjb250ZXh0RGVidWdJZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CkBAIC00NzgsNyArNDgw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH0KIAogCi0gICAgdjg6OkxvY2FsPHY4OjpD
b250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdjg6Okxv
Y2FsPHY4OjpDb250ZXh0PiB0b1Y4Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpOwogCiAgICAgLy8gVXNlZCBieSBh
biBpbnRlcmNlcHRvciBjYWxsYmFjayB0aGF0IGl0IGhhc24ndCBmb3VuZCBhbnl0aGluZyB0bwog
ICAgIC8vIGludGVyY2VwdC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGls
aXRpZXMuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKaW5kZXggMDM3
M2FlZS4uYzU0N2NjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGll
cy5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0aWxpdGllcy5jcHAKQEAgLTE2OCw3
ICsxNjgsOCBAQCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUs
IHY4OjpUcnlDYXRjaCYgZXhjZXB0aW9uQ2F0Y2hlcikKICAgICAvLyBEbyBub3QgcmVwb3J0IHRo
ZSBleGNlcHRpb24gaWYgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIGNvbnRleHQgaXMgRG9jdW1lbnQg
YmVjYXVzZSB3ZSBkbyBub3Qgd2FudCB0byBsZWFkIHRvIGR1cGxpY2F0ZSBlcnJvciBtZXNzYWdl
cyBpbiB0aGUgY29uc29sZS4KICAgICAvLyBGSVhNRSAoMzExNzEpOiBuZWVkIGJldHRlciBkZXNp
Z24gdG8gc29sdmUgdGhlIGR1cGxpY2F0ZSBlcnJvciBtZXNzYWdlIHJlcG9ydGluZyBwcm9ibGVt
LgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KHNjcmlwdFN0YXRlKTsKLSAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
KyAgICAvLyBEdXJpbmcgdGhlIGZyYW1lIHRlYXJkb3duLCB0aGVyZSBtYXkgbm90IGJlIGEgdmFs
aWQgY29udGV4dC4KKyAgICBpZiAoY29udGV4dCAmJiAhY29udGV4dC0+aXNEb2N1bWVudCgpKQog
ICAgICAgY29udGV4dC0+cmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
c291cmNlVVJMKTsKICAgICBleGNlcHRpb25DYXRjaGVyLlJlc2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcAppbmRl
eCA4ZjE1MTRkLi5lNTM1NmRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29y
a2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhX
b3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTQ4LDggKzQ4LDggQEAgc3RhdGljIFdv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eSogd29ya2VyUHJveHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICByZXR1cm4gd29ya2VyQ29udGV4dC0+c2NyaXB0KCktPnByb3h5
KCk7CiB9CiAKLVY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OlY4V29ya2VyQ29udGV4dEV2
ZW50TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzSW5saW5l
KQotICAgIDogVjhFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpc0lubGluZSkKK1Y4V29ya2VyQ29u
dGV4dEV2ZW50TGlzdGVuZXI6OlY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIodjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzSW5saW5lLCBjb25zdCBXb3JsZENvbnRleHRI
YW5kbGUmIHdvcmxkQ29udGV4dCkKKyAgICA6IFY4RXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaXNJ
bmxpbmUsIHdvcmxkQ29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuaAppbmRleCA2OGJlMWUzLi40NDg3NDk3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVu
ZXIuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgVjhFdmVudExpc3RlbmVyIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4V29ya2VyQ29udGV4dEV2
ZW50TGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wg
aXNJbmxpbmUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4V29ya2VyQ29udGV4dEV2ZW50
TGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNJ
bmxpbmUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4V29ya2VyQ29udGV4dEV2ZW50TGlz
dGVuZXIobGlzdGVuZXIsIGlzSW5saW5lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlzSW5saW5lLCB3b3Js
ZENvbnRleHQpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKICAgICAgICAgdmlydHVhbCBib29s
IHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBsaXN0ZW5lciwgYm9vbCBpc0lubGluZSk7CisgICAgICAgIFY4V29ya2VyQ29udGV4dEV2ZW50
TGlzdGVuZXIodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3RlbmVyLCBib29sIGlzSW5saW5lLCBj
b25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCk7CiAKICAgICAgICAgdmlydHVh
bCB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGpzRXZlbnQsIEV2ZW50Kik7CiAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBnZXRSZWNlaXZlck9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
bGRDb250ZXh0SGFuZGxlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFu
ZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWNlYjNjCi0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ybGRDb250
ZXh0SGFuZGxlLmgiCisKKyNpbmNsdWRlICJWOElzb2xhdGVkV29ybGQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXb3JsZENvbnRleHRIYW5kbGU6OldvcmxkQ29udGV4dEhhbmRsZShXb3Js
ZFRvVXNlIHdvcmxkVG9Vc2UpCisgICAgOiBtX3dvcmxkVG9Vc2Uod29ybGRUb1VzZSkKK3sKKyAg
ICBpZiAod29ybGRUb1VzZSA9PSBVc2VNYWluV29ybGQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChWOElzb2xhdGVkV29ybGQqIHdvcmxkID0gVjhJc29sYXRlZFdvcmxkOjpnZXRFbnRlcmVk
KCkpCisgICAgICAgIG1fY29udGV4dCA9IHdvcmxkLT5zaGFyZWRDb250ZXh0KCk7Cit9CisKK3Y4
OjpMb2NhbDx2ODo6Q29udGV4dD4gV29ybGRDb250ZXh0SGFuZGxlOjphZGp1c3RlZENvbnRleHQo
VjhQcm94eSogcHJveHkpIGNvbnN0Cit7CisgICAgaWYgKG1fd29ybGRUb1VzZSA9PSBVc2VNYWlu
V29ybGQpCisgICAgICAgIHJldHVybiBwcm94eS0+bWFpbldvcmxkQ29udGV4dCgpOworICAgIGlm
ICghbV9jb250ZXh0IHx8IG1fY29udGV4dC0+Z2V0KCkuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gcHJveHktPmNvbnRleHQoKTsKKyAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6
TmV3KG1fY29udGV4dC0+Z2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JsZENvbnRleHRIYW5kbGUuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFu
ZGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJmN2FkOAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV29ybGRDb250ZXh0SGFuZGxlX2gKKyNkZWZpbmUgV29ybGRD
b250ZXh0SGFuZGxlX2gKKworI2luY2x1ZGUgIlNoYXJlZFBlcnNpc3RlbnQuaCIKKworI2luY2x1
ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFY4UHJveHk7CisKK2VudW0gV29ybGRUb1VzZSB7IFVzZU1haW5Xb3JsZCwgVXNl
Q3VycmVudFdvcmxkIH07CisKK2NsYXNzIFdvcmxkQ29udGV4dEhhbmRsZSB7CitwdWJsaWM6Cisg
ICAgV29ybGRDb250ZXh0SGFuZGxlKFdvcmxkVG9Vc2Ugd29ybGRUb1VzZSk7CisgICAgdjg6Okxv
Y2FsPHY4OjpDb250ZXh0PiBhZGp1c3RlZENvbnRleHQoVjhQcm94eSogcHJveHkpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIFdvcmxkVG9Vc2UgbV93b3JsZFRvVXNlOworICAgIFJlZlB0cjxTaGFy
ZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiA+IG1fY29udGV4dDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdvcmxkQ29udGV4dEhhbmRsZV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmNwcAppbmRl
eCAzNTA0MjRmLi4yNGQ3NTJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTM1LDggKzM1LDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1WOEV2ZW50TGlzdGVuZXI6OlY4RXZlbnRMaXN0ZW5lcih2ODo6TG9j
YWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNBdHRyaWJ1dGUpCi0gICAgOiBWOEFic3Ry
YWN0RXZlbnRMaXN0ZW5lcihpc0F0dHJpYnV0ZSkKK1Y4RXZlbnRMaXN0ZW5lcjo6VjhFdmVudExp
c3RlbmVyKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0F0dHJpYnV0ZSwg
Y29uc3QgV29ybGRDb250ZXh0SGFuZGxlJiB3b3JsZENvbnRleHQpCisgICAgOiBWOEFic3RyYWN0
RXZlbnRMaXN0ZW5lcihpc0F0dHJpYnV0ZSwgd29ybGRDb250ZXh0KQogewogICAgIHNldExpc3Rl
bmVyT2JqZWN0KGxpc3RlbmVyKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tRXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmgKaW5kZXggY2EwMjlhMS4uZjlkNTM4NSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudExpc3RlbmVyLmgK
QEAgLTQ0LDEzICs0NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gdGhhdCBjYW4g
aGFuZGxlIHRoZSBldmVudC4KICAgICBjbGFzcyBWOEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgVjhB
YnN0cmFjdEV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8VjhFdmVudExpc3RlbmVyPiBjcmVhdGUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGxpc3Rl
bmVyLCBib29sIGlzQXR0cmlidXRlKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOEV2ZW50
TGlzdGVuZXI+IGNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNB
dHRyaWJ1dGUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4RXZlbnRMaXN0ZW5lcihsaXN0
ZW5lciwgaXNBdHRyaWJ1dGUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhF
dmVudExpc3RlbmVyKGxpc3RlbmVyLCBpc0F0dHJpYnV0ZSwgd29ybGRDb250ZXh0KSk7CiAgICAg
ICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgVjhFdmVudExpc3RlbmVyKHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiBsaXN0ZW5lciwgYm9vbCBpc0F0dHJpYnV0ZSk7CisgICAgICAgIFY4RXZl
bnRMaXN0ZW5lcih2ODo6TG9jYWw8djg6Ok9iamVjdD4gbGlzdGVuZXIsIGJvb2wgaXNBdHRyaWJ1
dGUsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KTsKIAogICAgICAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBnZXRMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAo=
</data>
<flag name="review"
          id="26529"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>