<?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>75099</bug_id>
          
          <creation_ts>2011-12-22 10:57:17 -0800</creation_ts>
          <short_desc>[Qt] [WK2] Provide a way to create and communicate to isolated JS environments</short_desc>
          <delta_ts>2014-02-03 03:19:31 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Marcelo de Oliveira Filho">cmarcelo</reporter>
          <assigned_to name="Caio Marcelo de Oliveira Filho">cmarcelo</assigned_to>
          <cc>adrian.yanes</cc>
    
    <cc>ahf</cc>
    
    <cc>ariya.hidayat</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>526366</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-12-22 10:57:17 -0800</bug_when>
    <thetext>[Qt] [WK2] Provide a way to create and communicate to isolated JS environments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526372</commentid>
    <comment_count>1</comment_count>
      <attachid>120343</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-12-22 11:05:31 -0800</bug_when>
    <thetext>Created attachment 120343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526392</commentid>
    <comment_count>2</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-12-22 11:33:51 -0800</bug_when>
    <thetext>This is a first iteration trying to implement the second part of my proposal described in the QtWebKit mailing list https://lists.webkit.org/pipermail/webkit-qt/2011-October/001953.html

Some things are not there yet. Specially I would like to be able to specify multiple sources instead of only one OR allowing a source to import other JS files. I tend to prefer the first approach. The reason for this is easily allowing the usage of JS libraries in our &quot;injected&quot; scripts.

I also deliberated choose to make WebScriptEnvironment have a view property, moving away from the initial proposal of WebView(.experimental) which was to have a list of WebScriptEnvironments. After trying both approaches, I felt that this way we avoid issues like putting the same environment in two webviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526817</commentid>
    <comment_count>3</comment_count>
      <attachid>120343</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-12-23 03:54:56 -0800</bug_when>
    <thetext>Comment on attachment 120343
Patch

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

What about security? Cant the local script just load a remote script from the document? test?

&gt; Source/WebKit2/ChangeLog:10
&gt; +        loaded in WebScriptEnvironment will access the same DOM but thru different set

same dom as what? through*

&gt; Source/WebKit2/ChangeLog:15
&gt; +        The scripts in the environments run in the context of the main frame for each
&gt; +        page loaded. QML application can exchange messages with the script
&gt; +        asynchronously.

Is that limited? what about iframes?

&gt; Source/WebKit2/ChangeLog:21
&gt; +        run). So WebScriptEnvironment provides a way to do DOM manipulation, covering some
&gt; +        use-cases of our WK1&apos;s QWebElement.

Maybe even more?

&gt; Source/WebKit/qt/declarative/experimental/plugin.cpp:51
&gt; +        qmlRegisterType&lt;QWebScriptEnvironment&gt;(uri, 3, 0, &quot;WebScriptEnvironment&quot;);

Should we include DOM in the name? WebDomScriptEnvironment or maybe just WebDomScript?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:298
&gt; +void QQuickWebViewPrivate::addSourceToScriptEnvironment(uint64_t id, const QString&amp; source)

Source?  JSSource?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:604
&gt; +    variantMap.insert(QLatin1String(&quot;origin&quot;), q_ptr-&gt;url());

Should we use the security origin in the future?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:606
&gt; +    // FIXME: Check the case when we unregistered but there are messages still queued in IPC. Unsure if this could happen.

If it cannot happen we should assert in some way... it also serves as documentation

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:609
&gt; +    emit scriptEnvironment-&gt;messageReceived(variantMap);

Maybe

if (QWebScriptEnvironment* scriptEnvironment = scriptEnvironments.get(id))
    scriptEnvironment-&gt;messageReceived(variantMap);

should be clearer

&gt; Source/WebKit2/UIProcess/API/qt/qwebscriptenvironment.cpp:33
&gt; +QWebScriptEnvironment::QWebScriptEnvironment(QObject* parent)
&gt; +    : QObject(parent)
&gt; +    , m_id(s_nextId++)
&gt; +{
&gt; +
&gt; +}

assert(parent) ?

&gt; Source/WebKit2/UIProcess/API/qt/qwebscriptenvironment.cpp:40
&gt; +    if (!m_webView.data()) {
&gt; +        qWarning(&quot;QWebScriptEnvironment::postMessage: need to set the view before posting messages&quot;);
&gt; +        return;
&gt; +    }

Wasn&apos;t some of the features of the old api that you didn&apos;t need a view? just wondering

&gt; Source/WebKit2/UIProcess/API/qt/qwebscriptenvironment.cpp:45
&gt; +void QWebScriptEnvironment::setSource(const QUrl&amp; source)

setSourceUrl? somewhere else source is a string, so this could be more clear

&gt; Source/WebKit2/UIProcess/API/qt/qwebscriptenvironment.cpp:53
&gt; +    if (!source.isLocalFile()) {
&gt; +        qWarning(&quot;QWebScriptEnvironment::setSource(): Only local files are supported as source.&quot;);
&gt; +        return;
&gt; +    }

This is why we really need to do that security origin class and do this the proper way (there is a bug somewhere from Savago)

&gt; Source/WebKit2/UIProcess/API/qt/qwebscriptenvironment.cpp:68
&gt; +void QWebScriptEnvironment::setView(QQuickWebView* webView)

Would setPage make more sense?

&gt; Source/WebKit2/UIProcess/API/qt/qwebscriptenvironment_p.h:49
&gt; +    void sourceChanged();
&gt; +    void viewChanged();

Is this something that is common?

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebScriptEnvironment/dom-manipulator.js:25
&gt; +navigator.qt.onmessage = function(ev) {
&gt; +    var message = ev.data;
&gt; +    if (message in domManipulator)
&gt; +        navigator.qt.postMessage(domManipulator[message]());
&gt; +}

Nice :)

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebScriptEnvironment/tst_basic.qml:14
&gt; +    WebScriptEnvironment {
&gt; +        view: webView
&gt; +        source: Qt.resolvedUrl(&quot;change-document-title.js&quot;)
&gt; +    }

Would inline source be a nice feature?

WebDomScript? Maybe add Remote? 

I don&apos;t think it is clear from the api when the script is executed

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebScriptEnvironment/tst_domIsShared.qml:53
&gt; +    TestCase {
&gt; +        name: &quot;WebScriptEnvironmentDomIsShared&quot;

I think adding Remote to the name, makes it obvious in the API that it is shared, so that might be a good point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526826</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-12-23 04:38:33 -0800</bug_when>
    <thetext>I like the name WebPreloadedScript and judging from http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW2 these are preloaded and you will have to add the method to onload from the script itself if you intent to modify the dom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526827</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-12-23 04:41:08 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I like the name WebPreloadedScript and judging from http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW2 these are preloaded and you will have to add the method to onload from the script itself if you intent to modify the dom.

ups I meant http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/InjectingScripts/InjectingScripts.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545209</commentid>
    <comment_count>6</comment_count>
      <attachid>120343</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-01-30 10:50:24 -0800</bug_when>
    <thetext>Comment on attachment 120343
Patch

I talked a bit with Noam and we concluded we can start &quot;smaller&quot;.

I will work this week on modifying this patch to work with the JS page environment. This will allow us inject JS code. Existing communication means will move to inside WebScript.

I intend to keep the WebScript API similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617961</commentid>
    <comment_count>7</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-05-07 14:44:31 -0700</bug_when>
    <thetext>A related patch, with a simpler scope, is at bug 85827.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975368</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:19:31 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120343</attachid>
            <date>2011-12-22 11:05:31 -0800</date>
            <delta_ts>2012-01-30 10:50:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75099-20111222160640.patch</filename>
            <type>text/plain</type>
            <size>67952</size>
            <attacher name="Caio Marcelo de Oliveira Filho">cmarcelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDg0YjdhMjMwMGM3
MjQ0MmE4YjJkZjdmYWQzZGY5ODlhNDhiNTVjMjQuLmYzZGE1Y2FkYzAxYjk3ZmI1NTEyODIyOTRk
MDcyYzRhOTFiMzUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTIt
MjIgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBbUXRdIFtXSzJdIFByb3ZpZGUgYSB3YXkgdG8gY3JlYXRlIGFu
ZCBjb21tdW5pY2F0ZSB0byBpc29sYXRlZCBKUyBlbnZpcm9ubWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDk5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZWNsYXJhdGl2ZS9leHBlcmltZW50
YWwvcGx1Z2luLmNwcDogRXhwb3NlZCBXZWJTY3JpcHRFbnZpcm9ubWVudC4KKwogMjAxMS0xMi0y
MCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBdm9pZCB1bm5l
Y2Vzc2FyeSB3b3JrIHdoZW4gcmVtb3ZpbmcgYXR0cmlidXRlcyBmcm9tIGFuIGVsZW1lbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxOTJlYzg5OTk1M2YxNmNkODRkZWViODMzM2MxYzJlZWEwN2MxNmJlLi43MmZk
NDJkYTNjN2Y1Njc3Mzg0ZDQ2YjAxMDdiOTA4NzgyMWQ2YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTA2IEBACisyMDExLTEyLTIyICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxj
YWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XSBbV0syXSBQcm92aWRl
IGEgd2F5IHRvIGNyZWF0ZSBhbmQgY29tbXVuaWNhdGUgdG8gaXNvbGF0ZWQgSlMgZW52aXJvbm1l
bnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA5
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZWQgYSBuZXcgUU1MIGVsZW1lbnQsIFdlYlNjcmlwdEVudmlyb25tZW50LCB0aGF0IGNhbiBiZSBh
c3NvY2lhdGVkIHdpdGggYQorICAgICAgICBXZWJWaWV3IGFuZCBwcm9kdWNlcyBhIG5ldyBpc29s
YXRlZCBKUyB3b3JsZCBmb3Igc2NyaXB0IGV4ZWN1dGlvbi4gQSBzY3JpcHQKKyAgICAgICAgbG9h
ZGVkIGluIFdlYlNjcmlwdEVudmlyb25tZW50IHdpbGwgYWNjZXNzIHRoZSBzYW1lIERPTSBidXQg
dGhydSBkaWZmZXJlbnQgc2V0CisgICAgICAgIG9mIGJpbmRpbmdzLgorCisgICAgICAgIFRoZSBz
Y3JpcHRzIGluIHRoZSBlbnZpcm9ubWVudHMgcnVuIGluIHRoZSBjb250ZXh0IG9mIHRoZSBtYWlu
IGZyYW1lIGZvciBlYWNoCisgICAgICAgIHBhZ2UgbG9hZGVkLiBRTUwgYXBwbGljYXRpb24gY2Fu
IGV4Y2hhbmdlIG1lc3NhZ2VzIHdpdGggdGhlIHNjcmlwdAorICAgICAgICBhc3luY2hyb25vdXNs
eS4KKworICAgICAgICBUZXN0cyB3ZXJlIGFkZGVkIHRvIGNoZWNrIGFuZCBkZW1vbnN0cmF0ZSB0
aGUgZmVhdHVyZXMgb2YgdGhlIGVudmlyb25tZW50cy4KKyAgICAgICAgRXZlbiB0aG91Z2ggZWFj
aCBlbnZpcm9ubWVudCBoYXZlIGl0cyBvd24gRE9NIGJpbmRpbmdzLCB0aGUgRE9NIGlzIHRoZSBz
YW1lIGZvcgorICAgICAgICBhbGwgZW52aXJvbm1lbnRzIChpbmNsdWRpbmcgdGhlIHJlZ3VsYXIg
ZW52aXJvbm1lbnQgd2hlcmUgSlMgY29kZSBmcm9tIHRoZSBwYWdlCisgICAgICAgIHJ1bikuIFNv
IFdlYlNjcmlwdEVudmlyb25tZW50IHByb3ZpZGVzIGEgd2F5IHRvIGRvIERPTSBtYW5pcHVsYXRp
b24sIGNvdmVyaW5nIHNvbWUKKyAgICAgICAgdXNlLWNhc2VzIG9mIG91ciBXSzEncyBRV2ViRWxl
bWVudC4KKworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpyZWdp
c3RlclNjcmlwdEVudmlyb25tZW50KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp1
bnJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZh
dGU6OmFkZFNvdXJjZVRvU2NyaXB0RW52aXJvbm1lbnQpOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6OnJlbW92ZVNvdXJjZUZyb21TY3JpcHRFbnZpcm9ubWVudCk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6cG9zdE1lc3NhZ2VUb1NjcmlwdEVudmlyb25tZW50KToKKyAg
ICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21TY3JpcHRF
bnZpcm9ubWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3Bf
cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnNjcmlwdGVudmlyb25tZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChRV2ViU2NyaXB0RW52aXJvbm1lbnQ6OlFXZWJTY3JpcHRFbnZp
cm9ubWVudCk6CisgICAgICAgIChRV2ViU2NyaXB0RW52aXJvbm1lbnQ6OnBvc3RNZXNzYWdlKToK
KyAgICAgICAgKFFXZWJTY3JpcHRFbnZpcm9ubWVudDo6c2V0U291cmNlKToKKyAgICAgICAgKFFX
ZWJTY3JpcHRFbnZpcm9ubWVudDo6c2V0Vmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC9xd2Vic2NyaXB0ZW52aXJvbm1lbnRfcC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVudmlyb25tZW50L2NoYW5nZS1kb2N1bWVu
dC10aXRsZS5qczogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9XZWJTY3JpcHRFbnZpcm9ubWVudC9kb20tbWFuaXB1bGF0b3IuanM6IEFkZGVkLgorICAg
ICAgICAoZG9tTWFuaXB1bGF0b3IubmFtZS5jb3VudFBhcmFncmFwaHMpOgorICAgICAgICAoZG9t
TWFuaXB1bGF0b3IuYWRkUGFyYWdyYXBoKToKKyAgICAgICAgKGRvbU1hbmlwdWxhdG9yLnJldmVy
c2VOYW1lKToKKyAgICAgICAgKGRvbU1hbmlwdWxhdG9yLmdldE5hbWUpOgorICAgICAgICAobmF2
aWdhdG9yLnF0Lm9ubWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9XZWJTY3JpcHRFbnZpcm9ubWVudC9lY2hvLW1lc3NhZ2VzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKG5hdmlnYXRvci5xdC5vbm1lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvZWNoby1yZXZlcnNlZC1tZXNz
YWdlcy5qczogQWRkZWQuCisgICAgICAgIChuYXZpZ2F0b3IucXQub25tZXNzYWdlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVudmlyb25tZW50
L3RzdF9iYXNpYy5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvdHN0X2RvbUlzU2hhcmVkLnFtbDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRFbnZp
cm9ubWVudC90c3RfbWVzc2FnaW5nLnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRFbnZpcm9ubWVudC90c3RfbXVsdGlwbGUucW1s
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRl
c3RzLnBybzoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVu
dC5jcHA6CisgICAgICAgIChRdFBhZ2VDbGllbnQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbVNjcmlw
dEVudmlyb25tZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZUJvZHlGb3JTY3JpcHRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2Vi
Q29udGV4dDo6cmVnaXN0ZXJTY3JpcHRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0
V2ViQ29udGV4dDo6dW5yZWdpc3RlclNjcmlwdEVudmlyb25tZW50KToKKyAgICAgICAgKFdlYktp
dDo6UXRXZWJDb250ZXh0OjphZGRTb3VyY2VUb1NjcmlwdEVudmlyb25tZW50KToKKyAgICAgICAg
KFdlYktpdDo6UXRXZWJDb250ZXh0OjpyZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJvbm1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OnBvc3RNZXNzYWdlVG9TY3JpcHRFbnZp
cm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6Omhh
bmRsZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpRdFdl
YkNvbnRleHQ6OmhhbmRsZU1lc3NhZ2VGcm9tU2NyaXB0RW52aXJvbm1lbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0L1F0
QnVpbHRpbkJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZTo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5kbGU6OmhhbmRs
ZU1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6UXRCdWlsdGlu
QnVuZGxlOjpoYW5kbGVTZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQpOgorICAgICAgICAoV2Vi
S2l0OjpRdEJ1aWx0aW5CdW5kbGU6OmhhbmRsZVJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5kbGU6OmhhbmRsZVVucmVnaXN0ZXJTY3JpcHRF
bnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZTo6aGFuZGxlQWRk
U291cmNlVG9TY3JpcHRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1
bmRsZTo6aGFuZGxlUmVtb3ZlU291cmNlRnJvbVNjcmlwdEVudmlyb25tZW50KToKKyAgICAgICAg
KFdlYktpdDo6UXRCdWlsdGluQnVuZGxlOjpoYW5kbGVNZXNzYWdlVG9TY3JpcHRFbnZpcm9ubWVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpkaWRDbGVhcldpbmRvd0ZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6UXRCdWlsdGluQnVuZGxlUGFnZTo6cmVnaXN0ZXJTY3JpcHRFbnZpcm9ubWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBhZ2U6OnVucmVnaXN0ZXJTY3JpcHRF
bnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBhZ2U6OmFkZFNv
dXJjZVRvU2NyaXB0RW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5k
bGVQYWdlOjpyZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJvbm1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZVRvU2NyaXB0RW52aXJv
bm1lbnQpOgorICAgICAgICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpwb3N0TWVzc2Fn
ZUZyb21TY3JpcHRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRs
ZVBhZ2U6OnJlZ2lzdGVyTmF2aWdhdG9yUXRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpRdEJ1
aWx0aW5CdW5kbGVQYWdlOjpuYXZpZ2F0b3JEb3RRdEpTQ2xhc3MpOgorICAgICAgICAoV2ViS2l0
OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpTY3JpcHRFbnZpcm9ubWVudDo6U2NyaXB0RW52aXJvbm1l
bnQpOgorICAgICAgICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpTY3JpcHRFbnZpcm9u
bWVudDo6flNjcmlwdEVudmlyb25tZW50KToKKyAgICAgICAgKFdlYktpdDo6UXRCdWlsdGluQnVu
ZGxlUGFnZTo6U2NyaXB0RW52aXJvbm1lbnQ6OnJlc2V0TmF2aWdhdG9yRG90UXQpOgorICAgICAg
ICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpTY3JpcHRFbnZpcm9ubWVudDo6YWRkU291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6UXRCdWlsdGluQnVuZGxlUGFnZTo6U2NyaXB0RW52aXJv
bm1lbnQ6OnJlbW92ZVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBh
Z2U6OlNjcmlwdEVudmlyb25tZW50Ojpwb3N0TWVzc2FnZUZyb21TY3JpcHRFbnZpcm9ubWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlwdEVudmlyb25tZW50
OjpuYXZpZ2F0b3JEb3RRdFBvc3RNZXNzYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpR
dEJ1aWx0aW5CdW5kbGVQYWdlOjpTY3JpcHRFbnZpcm9ubWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlUGFnZS5oOgorICAgICAg
ICAoV2ViS2l0OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpwYWdlR3JvdXApOgorICAgICAgICAoV2Vi
S2l0OjpRdEJ1aWx0aW5CdW5kbGVQYWdlOjpTY3JpcHRFbnZpcm9ubWVudDo6d29ybGQpOgorCiAy
MDExLTEyLTIyICBSeXVhbiBDaG9pIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPiwgVG9tYXN6IE1v
cmF3c2tpIDx0Lm1vcmF3c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRk
IGFuIG9wdGlvbiB0byBidWlsZCBXZWJLaXQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9kZWNsYXJhdGl2ZS9leHBlcmltZW50YWwvcGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
ZGVjbGFyYXRpdmUvZXhwZXJpbWVudGFsL3BsdWdpbi5jcHAKaW5kZXggZDI4OTIyOWQ3NjBlNjFh
YzNmN2NiZmZiZjFiMjllMDE5YmJkZWViNS4uY2E1ZjQxZDNhNjY4ZmI3NjYzOTk4ZDYxYTI1ZjQ0
MjY1NGU2ZjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9leHBl
cmltZW50YWwvcGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL2V4
cGVyaW1lbnRhbC9wbHVnaW4uY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicXF1aWNr
d2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCiAjaW5jbHVkZSAicXdl
YmRvd25sb2FkaXRlbV9wLmgiCisjaW5jbHVkZSAicXdlYnNjcmlwdGVudmlyb25tZW50X3AuaCIK
ICNpbmNsdWRlICJxd2Vidmlld3BvcnRpbmZvX3AuaCIKIAogI2luY2x1ZGUgInF3ZWJuYXZpZ2F0
aW9uaGlzdG9yeV9wLmgiCkBAIC00Nyw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcW1sUmVn
aXN0ZXJVbmNyZWF0YWJsZVR5cGU8UVdlYkRvd25sb2FkSXRlbT4odXJpLCAzLCAwLCAiRG93bmxv
YWRJdGVtIiwgUU9iamVjdDo6dHIoIkNhbm5vdCBjcmVhdGUgc2VwYXJhdGUgaW5zdGFuY2Ugb2Yg
RG93bmxvYWRJdGVtIikpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlwZTxRV2Vi
TmF2aWdhdGlvbkxpc3RNb2RlbD4odXJpLCAzLCAwLCAiTmF2aWdhdGlvbkxpc3RNb2RlbCIsIFFP
YmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGluc3RhbmNlIG9mIE5hdmlnYXRpb25M
aXN0TW9kZWwiKSk7CiAgICAgICAgIHFtbFJlZ2lzdGVyVW5jcmVhdGFibGVUeXBlPFFXZWJOYXZp
Z2F0aW9uSGlzdG9yeT4odXJpLCAzLCAwLCAiTmF2aWdhdGlvbkhpc3RvcnkiLCBRT2JqZWN0Ojp0
cigiQ2Fubm90IGNyZWF0ZSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiBOYXZpZ2F0aW9uSGlzdG9yeSIp
KTsKKyAgICAgICAgcW1sUmVnaXN0ZXJUeXBlPFFXZWJTY3JpcHRFbnZpcm9ubWVudD4odXJpLCAz
LCAwLCAiV2ViU2NyaXB0RW52aXJvbm1lbnQiKTsKICAgICAgICAgcW1sUmVnaXN0ZXJFeHRlbmRl
ZFR5cGU8UVF1aWNrV2ViVmlldywgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbEV4dGVuc2lvbj4o
dXJpLCAzLCAwLCAiV2ViVmlldyIpOwogICAgICAgICBxbWxSZWdpc3RlclVuY3JlYXRhYmxlVHlw
ZTxRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsPih1cmksIDMsIDAsICJXZWJWaWV3RXhwZXJpbWVu
dGFsIiwKICAgICAgICAgICAgIFFPYmplY3Q6OnRyKCJDYW5ub3QgY3JlYXRlIHNlcGFyYXRlIGlu
c3RhbmNlIG9mIFdlYlZpZXdFeHBlcmltZW50YWwiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCAyYTRmZTc1
NTE2NWM2MTE2OTE4OTE2MDAzNjhjZGVkMTRkMzE4YWNkLi4zNzJiOGQ5NGI0MzgzNGFiMWY2MGFj
YWVmYWJhZDBmNzYzZTJiODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTQxLDYgKzQxLDcgQEAgSEVBREVS
UyArPSBcCiAgICAgUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBcCiAgICAg
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggXAogICAgIFBsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLQXJyYXkuaCBcCiAgICAgU2hh
cmVkL0FQSS9jL1dLQmFzZS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8u
aCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5oIFwKQEAgLTE3Myw2ICsxNzQs
NyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmggXAog
ICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9xdC9xd2VicHJlZmVyZW5jZXNfcF9wLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdl
YnNjcmlwdGVudmlyb25tZW50X3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxv
YWRpdGVtX3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVtX3BfcC5o
IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdF9wLmggXApAQCAt
Mjg4LDYgKzI5MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSWNvbkRhdGFiYXNl
L1dlYkljb25EYXRhYmFzZVByb3h5LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmggXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxl
LmggXApAQCAtMjk1LDYgKzI5OCw4IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlR3JvdXAuaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmggXAorICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmggXAorICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVTY3JpcHRXb3JsZC5oIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5o
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggXApAQCAt
NDk5LDYgKzUwNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dL
VVJMUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJkb3dubG9hZGl0ZW0uY3BwIFwK
ICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwZXJtaXNzaW9ucmVxdWVzdC5jcHAgXAorICAgIFVJ
UHJvY2Vzcy9BUEkvcXQvcXdlYnNjcmlwdGVudmlyb25tZW50LmNwcCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9xdC9xd2VibmF2aWdhdGlvbnJlcXVlc3QuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnBhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJuYXZpZ2F0aW9u
aGlzdG9yeS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAKaW5kZXggNGRiZjkzODZkYWI3MjQ1ZjhhYmY0ZmFhNmM5MTAzMDAxMzQ4
NTM0ZS4uNDQ5YTM4NzAwNDg1NjE5ZTAwZGQ1Yjg2MTY4YjYyNDA5MGJjMmNlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAicXdlYm5hdmlnYXRpb25oaXN0b3J5X3BfcC5oIgogI2lu
Y2x1ZGUgInF3ZWJwcmVmZXJlbmNlc19wLmgiCiAjaW5jbHVkZSAicXdlYnByZWZlcmVuY2VzX3Bf
cC5oIgorI2luY2x1ZGUgInF3ZWJzY3JpcHRlbnZpcm9ubWVudF9wLmgiCiAjaW5jbHVkZSAicXdl
YnZpZXdwb3J0aW5mb19wLmgiCiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXpl
VGhyZWFkaW5nLmg+CkBAIC0yNzksNiArMjgwLDMzIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZh
dGU6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKICAgICBj
b250ZXh0LT5kb3dubG9hZE1hbmFnZXIoKS0+YWRkRG93bmxvYWQoZG93bmxvYWQsIGRvd25sb2Fk
SXRlbSk7CiB9CiAKKy8vIEZJWE1FOiBGaXggY2FzZSB3aGVuIHdlYnByb2Nlc3MgY3Jhc2gvcmVs
b2Fkcy4KK3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnJlZ2lzdGVyU2NyaXB0RW52aXJvbm1l
bnQodWludDY0X3QgaWQsIFFXZWJTY3JpcHRFbnZpcm9ubWVudCogc2NyaXB0RW52aXJvbm1lbnQp
Cit7CisgICAgQVNTRVJUKCFzY3JpcHRFbnZpcm9ubWVudHMuY29udGFpbnMoaWQpKTsKKyAgICBz
Y3JpcHRFbnZpcm9ubWVudHMuYWRkKGlkLCBzY3JpcHRFbnZpcm9ubWVudCk7CisgICAgY29udGV4
dC0+cmVnaXN0ZXJTY3JpcHRFbnZpcm9ubWVudCh3ZWJQYWdlUHJveHkuZ2V0KCksIGlkKTsKK30K
Kwordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dW5yZWdpc3RlclNjcmlwdEVudmlyb25tZW50
KHVpbnQ2NF90IGlkKQoreworICAgIEFTU0VSVChzY3JpcHRFbnZpcm9ubWVudHMuY29udGFpbnMo
aWQpKTsKKyAgICBzY3JpcHRFbnZpcm9ubWVudHMucmVtb3ZlKGlkKTsKKyAgICBjb250ZXh0LT51
bnJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQod2ViUGFnZVByb3h5LmdldCgpLCBpZCk7Cit9CisK
K3ZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmFkZFNvdXJjZVRvU2NyaXB0RW52aXJvbm1lbnQo
dWludDY0X3QgaWQsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0
RW52aXJvbm1lbnRzLmNvbnRhaW5zKGlkKSk7CisgICAgY29udGV4dC0+YWRkU291cmNlVG9TY3Jp
cHRFbnZpcm9ubWVudCh3ZWJQYWdlUHJveHkuZ2V0KCksIGlkLCBzb3VyY2UpOworfQorCit2b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpyZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJvbm1lbnQo
dWludDY0X3QgaWQsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0
RW52aXJvbm1lbnRzLmNvbnRhaW5zKGlkKSk7CisgICAgY29udGV4dC0+cmVtb3ZlU291cmNlRnJv
bVNjcmlwdEVudmlyb25tZW50KHdlYlBhZ2VQcm94eS5nZXQoKSwgaWQsIHNvdXJjZSk7Cit9CisK
IHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKCkKIHsKICAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IHdlYlBhZ2VQcm94
eS0+ZHJhd2luZ0FyZWEoKTsKQEAgLTU1MSw2ICs1NzksMTEgQEAgdm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6c2V0TmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBj
b250ZXh0LT5zZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQod2ViUGFnZVByb3h5LmdldCgpLCBl
bmFibGVkKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cG9zdE1lc3NhZ2VUb1Nj
cmlwdEVudmlyb25tZW50KHVpbnQ2NF90IGlkLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIGNvbnRleHQtPnBvc3RNZXNzYWdlVG9TY3JpcHRFbnZpcm9ubWVudCh3ZWJQYWdlUHJveHku
Z2V0KCksIGlkLCBtZXNzYWdlKTsKK30KKwogV2ViQ29yZTo6SW50U2l6ZSBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6dmlld1NpemUoKSBjb25zdAogewogICAgIHJldHVybiBXZWJDb3JlOjpJbnRTaXpl
KHBhZ2VWaWV3LT53aWR0aCgpLCBwYWdlVmlldy0+aGVpZ2h0KCkpOwpAQCAtNTY0LDYgKzU5Nywx
OCBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZp
Z2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmCiAgICAgZW1pdCBxX3B0ci0+ZXhwZXJpbWVudGFs
KCktPm1lc3NhZ2VSZWNlaXZlZCh2YXJpYW50TWFwKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tU2NyaXB0RW52aXJvbm1lbnQodWludDY0X3Qg
aWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBRVmFyaWFudE1hcCB2YXJpYW50TWFw
OworICAgIHZhcmlhbnRNYXAuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoImRhdGEiKSwgUVN0cmluZyht
ZXNzYWdlKSk7CisgICAgdmFyaWFudE1hcC5pbnNlcnQoUUxhdGluMVN0cmluZygib3JpZ2luIiks
IHFfcHRyLT51cmwoKSk7CisgICAgUVdlYlNjcmlwdEVudmlyb25tZW50KiBzY3JpcHRFbnZpcm9u
bWVudCA9IHNjcmlwdEVudmlyb25tZW50cy5nZXQoaWQpOworICAgIC8vIEZJWE1FOiBDaGVjayB0
aGUgY2FzZSB3aGVuIHdlIHVucmVnaXN0ZXJlZCBidXQgdGhlcmUgYXJlIG1lc3NhZ2VzIHN0aWxs
IHF1ZXVlZCBpbiBJUEMuIFVuc3VyZSBpZiB0aGlzIGNvdWxkIGhhcHBlbi4KKyAgICBpZiAoIXNj
cmlwdEVudmlyb25tZW50KQorICAgICAgICByZXR1cm47CisgICAgZW1pdCBzY3JpcHRFbnZpcm9u
bWVudC0+bWVzc2FnZVJlY2VpdmVkKHZhcmlhbnRNYXApOworfQorCiAvKiEKICAgICBccW1sc2ln
bmFsIFdlYlZpZXc6Om9uTmF2aWdhdGlvblJlcXVlc3RlZChyZXF1ZXN0KQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5kZXgg
M2I5OTkyODJiOTcyNTllMDZjODM1NWFhMmQxMDhjYTgyYWJmNzRmNy4uZWNjYzU1MDFkMzc2MWNj
MGY3ZGEwNmE5OTZjZDM4MmI1ODNhNjBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtMzUsNiArMzUsNyBAQAogCiAj
aW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAjaW5jbHVkZSA8UXRDb3JlL1FTY29wZWRQb2ludGVy
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDQsNiArNDUsNyBAQCBjbGFzcyBRdFdlYkNvbnRl
eHQ7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiB9CiBjbGFzcyBRV2ViTmF2aWdhdGlvbkhpc3Rvcnk7
CitjbGFzcyBRV2ViU2NyaXB0RW52aXJvbm1lbnQ7CiBjbGFzcyBRV2ViVmlld3BvcnRJbmZvOwog
CiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTU3LDYgKzU5LDcgQEAgY2xhc3MgUVF1aWNrV2ViVmll
d1ByaXZhdGUgewogICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJQYWdlOwogICAgIGZyaWVuZCBj
bGFzcyBRV2ViUHJlZmVyZW5jZXNQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlld3Bv
cnRJbmZvOworICAgIGZyaWVuZCBjbGFzcyBRV2ViU2NyaXB0RW52aXJvbm1lbnQ7CiAKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUVF1aWNrV2ViVmlld1ByaXZhdGUqIGdldChRUXVpY2tXZWJWaWV3KiBx
KSB7IHJldHVybiBxLT5kX3B0ci5kYXRhKCk7IH0KQEAgLTEwMyw5ICsxMDYsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQoYm9vbCk7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TY3JpcHRFbnZpcm9ubWVudCh1aW50NjRfdCwgY29uc3QgUVN0cmluZyYpOworCiAgICAgLy8g
UGFnZUNsaWVudC4KICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgY29uc3Q7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tU2NyaXB0RW52aXJvbm1l
bnQodWludDY0X3QsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgUVBvaW50JiBwb3MpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNv
bnN0IFFTaXplJiBuZXdTaXplKTsKICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwpAQCAtMTE0
LDYgKzEyMCwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93
bmxvYWRQcm94eSopOwogCiBwcml2YXRlOgorICAgIHZvaWQgcmVnaXN0ZXJTY3JpcHRFbnZpcm9u
bWVudCh1aW50NjRfdCwgUVdlYlNjcmlwdEVudmlyb25tZW50Kik7CisgICAgdm9pZCB1bnJlZ2lz
dGVyU2NyaXB0RW52aXJvbm1lbnQodWludDY0X3QpOworICAgIHZvaWQgYWRkU291cmNlVG9TY3Jp
cHRFbnZpcm9ubWVudCh1aW50NjRfdCwgY29uc3QgUVN0cmluZyYpOworICAgIHZvaWQgcmVtb3Zl
U291cmNlRnJvbVNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90LCBjb25zdCBRU3RyaW5nJik7CisK
KyAgICAvLyBGSVhNRTogcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIuCisgICAgdm9pZCBhZGRXZWJT
Y3JpcHQoUVdlYlNjcmlwdEVudmlyb25tZW50Kik7CisgICAgdm9pZCByZW1vdmVXZWJTY3JpcHQo
UVdlYlNjcmlwdEVudmlyb25tZW50Kik7CisKICAgICAvLyBUaGlzIGNsYXNzIGlzIHJlc3BvbnNp
YmxlIGZvciBjb2xsZWN0aW5nIGFuZCBhcHBseWluZyBhbGwgcHJvcGVydGllcwogICAgIC8vIG9u
IHRoZSB2aWV3cG9ydCBpdGVtLCB3aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBwYWdlIEEgdG8gcGFn
ZSBCIGlzIGZpbmlzaGVkLgogICAgIC8vIFNlZSBtb3JlIGF0IGh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL3dpa2kvUXRXZWJLaXRMYXlvdXRJbnRlcmFjdGlvbgpAQCAtMTQ3LDYgKzE2Miw4IEBAIHBy
aXZhdGU6CiAKICAgICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKIAorICAgIEhhc2hNYXA8dWludDY0
X3QsIFFXZWJTY3JpcHRFbnZpcm9ubWVudCo+IHNjcmlwdEVudmlyb25tZW50czsKKwogICAgIFFE
ZWNsYXJhdGl2ZUNvbXBvbmVudCogYWxlcnREaWFsb2c7CiAgICAgUURlY2xhcmF0aXZlQ29tcG9u
ZW50KiBjb25maXJtRGlhbG9nOwogICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogcHJvbXB0RGlh
bG9nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vic2Ny
aXB0ZW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
c2NyaXB0ZW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyYTY3MTc4N2ZmZWEzOWZjZWJlZjI4
MjlkODllM2FjZGI5Y2YzMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJzY3JpcHRlbnZpcm9ubWVudC5jcHAKQEAgLTAsMCArMSw4NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxd2Vic2Ny
aXB0ZW52aXJvbm1lbnRfcC5oIgorCisjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wX3AuaCIKKwor
dWludDY0X3QgUVdlYlNjcmlwdEVudmlyb25tZW50OjpzX25leHRJZCA9IDA7CisKK1FXZWJTY3Jp
cHRFbnZpcm9ubWVudDo6UVdlYlNjcmlwdEVudmlyb25tZW50KFFPYmplY3QqIHBhcmVudCkKKyAg
ICA6IFFPYmplY3QocGFyZW50KQorICAgICwgbV9pZChzX25leHRJZCsrKQoreworCit9CisKK3Zv
aWQgUVdlYlNjcmlwdEVudmlyb25tZW50Ojpwb3N0TWVzc2FnZShjb25zdCBRU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIGlmICghbV93ZWJWaWV3LmRhdGEoKSkgeworICAgICAgICBxV2FybmluZygi
UVdlYlNjcmlwdEVudmlyb25tZW50Ojpwb3N0TWVzc2FnZTogbmVlZCB0byBzZXQgdGhlIHZpZXcg
YmVmb3JlIHBvc3RpbmcgbWVzc2FnZXMiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3LmRhdGEoKSktPnBvc3RNZXNzYWdl
VG9TY3JpcHRFbnZpcm9ubWVudChtX2lkLCBtZXNzYWdlKTsKK30KKwordm9pZCBRV2ViU2NyaXB0
RW52aXJvbm1lbnQ6OnNldFNvdXJjZShjb25zdCBRVXJsJiBzb3VyY2UpCit7CisgICAgaWYgKHNv
dXJjZSA9PSBtX3NvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzb3VyY2UuaXNM
b2NhbEZpbGUoKSkgeworICAgICAgICBxV2FybmluZygiUVdlYlNjcmlwdEVudmlyb25tZW50Ojpz
ZXRTb3VyY2UoKTogT25seSBsb2NhbCBmaWxlcyBhcmUgc3VwcG9ydGVkIGFzIHNvdXJjZS4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcgPSBt
X3dlYlZpZXcuZGF0YSgpOworCisgICAgUVVybCBvbGRTb3VyY2UgPSBtX3NvdXJjZTsKKyAgICBp
ZiAod2ViVmlldyAmJiAhb2xkU291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmdldCh3ZWJWaWV3KS0+cmVtb3ZlU291cmNlRnJvbVNjcmlwdEVudmlyb25tZW50
KG1faWQsIG9sZFNvdXJjZS50b0xvY2FsRmlsZSgpKTsKKworICAgIG1fc291cmNlID0gc291cmNl
OworICAgIGlmICh3ZWJWaWV3ICYmICFzb3VyY2UuaXNFbXB0eSgpKQorICAgICAgICBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6Z2V0KHdlYlZpZXcpLT5hZGRTb3VyY2VUb1NjcmlwdEVudmlyb25tZW50
KG1faWQsIHNvdXJjZS50b0xvY2FsRmlsZSgpKTsKKworICAgIGVtaXQgc291cmNlQ2hhbmdlZCgp
OworfQorCit2b2lkIFFXZWJTY3JpcHRFbnZpcm9ubWVudDo6c2V0VmlldyhRUXVpY2tXZWJWaWV3
KiB3ZWJWaWV3KQoreworICAgIGlmICh3ZWJWaWV3ID09IG1fd2ViVmlldy5kYXRhKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFFRdWlja1dlYlZpZXcqIG9sZFdlYlZpZXcgPSBtX3dlYlZpZXcu
ZGF0YSgpOworICAgIGlmIChvbGRXZWJWaWV3KQorICAgICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6Z2V0KG9sZFdlYlZpZXcpLT51bnJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQobV9pZCk7CisK
KyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIGlmICh3ZWJWaWV3KSB7CisgICAgICAgIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpnZXQod2ViVmlldyktPnJlZ2lzdGVyU2NyaXB0RW52aXJvbm1l
bnQobV9pZCwgdGhpcyk7CisgICAgICAgIGlmICghbV9zb3VyY2UuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldCh3ZWJWaWV3KS0+YWRkU291cmNlVG9TY3Jp
cHRFbnZpcm9ubWVudChtX2lkLCBtX3NvdXJjZS50b0xvY2FsRmlsZSgpKTsKKyAgICB9CisKKyAg
ICBlbWl0IHZpZXdDaGFuZ2VkKCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJzY3JpcHRlbnZpcm9ubWVudF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJzY3JpcHRlbnZpcm9ubWVudF9wLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDli
ODYyNjVjODk1M2I5MjFhOTZkODIzMDFlMjg5MTA1YzNjNzdjYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnNjcmlwdGVudmlyb25tZW50X3Au
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBxd2Vic2NyaXB0
ZW52aXJvbm1lbnRfcF9oCisjZGVmaW5lIHF3ZWJzY3JpcHRlbnZpcm9ubWVudF9wX2gKKworI2lu
Y2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgorI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNp
bmNsdWRlIDxRdENvcmUvUU9iamVjdD4KKyNpbmNsdWRlIDxRdENvcmUvUVdlYWtQb2ludGVyPgor
CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYlNjcmlw
dEVudmlyb25tZW50IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCisgICAgUV9QUk9Q
RVJUWShRVXJsIHNvdXJjZSBSRUFEIHNvdXJjZSBXUklURSBzZXRTb3VyY2UgTk9USUZZIHNvdXJj
ZUNoYW5nZWQgRklOQUwpCisgICAgUV9QUk9QRVJUWShRUXVpY2tXZWJWaWV3KiB2aWV3IFJFQUQg
dmlldyBXUklURSBzZXRWaWV3IE5PVElGWSB2aWV3Q2hhbmdlZCBGSU5BTCkKKworcHVibGljOgor
ICAgIFFXZWJTY3JpcHRFbnZpcm9ubWVudChRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKworICAgIFFf
SU5WT0tBQkxFIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgUVN0cmluZyYpOworCisgICAgUVVybCBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgIHZvaWQgc2V0U291cmNlKGNv
bnN0IFFVcmwmKTsKKworICAgIFFRdWlja1dlYlZpZXcqIHZpZXcoKSBjb25zdCB7IHJldHVybiBt
X3dlYlZpZXcuZGF0YSgpOyB9CisgICAgdm9pZCBzZXRWaWV3KFFRdWlja1dlYlZpZXcqKTsKKwor
UV9TSUdOQUxTOgorICAgIHZvaWQgc291cmNlQ2hhbmdlZCgpOworICAgIHZvaWQgdmlld0NoYW5n
ZWQoKTsKKyAgICB2b2lkIG1lc3NhZ2VSZWNlaXZlZChjb25zdCBRVmFyaWFudE1hcCYgbWVzc2Fn
ZSk7CisKK3ByaXZhdGU6CisgICAgUV9ESVNBQkxFX0NPUFkoUVdlYlNjcmlwdEVudmlyb25tZW50
KQorCisgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOworCisgICAgLy8gRklY
TUU6IE1vdmUgdGhpcyB0byBhIFFXZWJTY3JpcHRFbnZpcm9ubWVudFByaXZhdGUKKworICAgIHVp
bnQ2NF90IG1faWQ7CisgICAgUVVybCBtX3NvdXJjZTsKKyAgICBRV2Vha1BvaW50ZXI8UVF1aWNr
V2ViVmlldz4gbV93ZWJWaWV3OworCisgICAgc3RhdGljIHVpbnQ2NF90IHNfbmV4dElkOworfTsK
KworI2VuZGlmIC8vIHF3ZWJzY3JpcHRlbnZpcm9ubWVudF9wX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJv
bm1lbnQvY2hhbmdlLWRvY3VtZW50LXRpdGxlLmpzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRFbnZpcm9ubWVudC9jaGFuZ2UtZG9jdW1l
bnQtdGl0bGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg1ZTlhMGY5ZmRhMWI0ZjUwZTQ4YjlmY2I0YTNkZjA2
MzRiNGI1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvY2hhbmdlLWRvY3VtZW50LXRp
dGxlLmpzCkBAIC0wLDAgKzEgQEAKK2RvY3VtZW50LnRpdGxlID0gIkNoYW5nZWQgdGhlIHRpdGxl
IGZyb20gYSBzY3JpcHQhIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvZG9tLW1hbmlwdWxhdG9y
LmpzIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJT
Y3JpcHRFbnZpcm9ubWVudC9kb20tbWFuaXB1bGF0b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZiZmU0ZGNi
Y2VhMjZkZmYwOTY5OGVhZDc0MDg4NDc0NWY1ZTY0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJv
bm1lbnQvZG9tLW1hbmlwdWxhdG9yLmpzCkBAIC0wLDAgKzEsMjUgQEAKK3ZhciBkb21NYW5pcHVs
YXRvciA9IHsKKyAgICBuYW1lOiAiZG9tTWFuaXB1bGF0b3IiLAorICAgIGNvdW50UGFyYWdyYXBo
czogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBjb3VudCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJwIikubGVuZ3RoOworICAgICAgICByZXR1cm4gY291bnQudG9TdHJpbmcoKTsK
KyAgICB9LAorICAgIGFkZFBhcmFncmFwaDogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBwID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2Vy
dEJlZm9yZShwLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworICAgICAgICByZXR1cm4gIk9L
IjsKKyAgICB9LAorICAgIHJldmVyc2VOYW1lOiBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5u
YW1lID0gdGhpcy5uYW1lLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik7CisgICAgICAgIHJl
dHVybiAiT0siOworICAgIH0sCisgICAgZ2V0TmFtZTogZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLm5hbWU7CisgICAgfQorfTsKKworbmF2aWdhdG9yLnF0Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2KSB7CisgICAgdmFyIG1lc3NhZ2UgPSBldi5kYXRhOworICAgIGlmIChtZXNzYWdl
IGluIGRvbU1hbmlwdWxhdG9yKQorICAgICAgICBuYXZpZ2F0b3IucXQucG9zdE1lc3NhZ2UoZG9t
TWFuaXB1bGF0b3JbbWVzc2FnZV0oKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVudmlyb25tZW50L2VjaG8t
bWVzc2FnZXMuanMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL1dlYlNjcmlwdEVudmlyb25tZW50L2VjaG8tbWVzc2FnZXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q5
Njc2NzgxNGJkYWM4ZTcxOWRlNWRiMTFhN2E4MjQ5MzcwZDU2NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0
RW52aXJvbm1lbnQvZWNoby1tZXNzYWdlcy5qcwpAQCAtMCwwICsxLDQgQEAKK25hdmlnYXRvci5x
dC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldikgeworICAgIHZhciBtZXNzYWdlID0gZXYuZGF0YTsK
KyAgICBuYXZpZ2F0b3IucXQucG9zdE1lc3NhZ2UobWVzc2FnZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVu
dmlyb25tZW50L2VjaG8tcmV2ZXJzZWQtbWVzc2FnZXMuanMgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVudmlyb25tZW50L2VjaG8tcmV2
ZXJzZWQtbWVzc2FnZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWZhNmNlM2Q0ZjE2ZjU4N2E1YmNmYjkyZTli
ZjUxYWY4MzAwZjFhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvZWNoby1yZXZlcnNl
ZC1tZXNzYWdlcy5qcwpAQCAtMCwwICsxLDUgQEAKK25hdmlnYXRvci5xdC5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldikgeworICAgIHZhciBtZXNzYWdlID0gZXYuZGF0YTsKKyAgICB2YXIgcmV2ZXJz
ZWRNZXNzYWdlID0gbWVzc2FnZS5zcGxpdCgnJykucmV2ZXJzZSgpLmpvaW4oJycpOworICAgIG5h
dmlnYXRvci5xdC5wb3N0TWVzc2FnZShyZXZlcnNlZE1lc3NhZ2UpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRF
bnZpcm9ubWVudC90c3RfYmFzaWMucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRFbnZpcm9ubWVudC90c3RfYmFzaWMucW1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ5MzFmNDRkOTdiMjRjYjFlZTYzNzA0OTUxZDA5YzlmOWI5MzE0YWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L1dlYlNjcmlwdEVudmlyb25tZW50L3RzdF9iYXNpYy5xbWwKQEAgLTAsMCArMSwzOSBAQAoraW1w
b3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAor
aW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAzLjAKKworV2ViVmlldyB7CisgICAgaWQ6IHdl
YlZpZXcKKyAgICB3aWR0aDogNDAwCisgICAgaGVpZ2h0OiAzMDAKKworICAgIFdlYlNjcmlwdEVu
dmlyb25tZW50IHsKKyAgICAgICAgdmlldzogd2ViVmlldworICAgICAgICBzb3VyY2U6IFF0LnJl
c29sdmVkVXJsKCJjaGFuZ2UtZG9jdW1lbnQtdGl0bGUuanMiKQorICAgIH0KKworICAgIFNpZ25h
bFNweSB7CisgICAgICAgIGlkOiBsb2FkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAg
ICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7
CisgICAgICAgIG5hbWU6ICJXZWJTY3JpcHRFbnZpcm9ubWVudEJhc2ljIgorCisgICAgICAgIGZ1
bmN0aW9uIHRlc3Rfd2l0aExvYWQoKSB7CisgICAgICAgICAgICBsb2FkU3B5LmNsZWFyKCkKKyAg
ICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0
bWwiKSkKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHdl
YlZpZXcudGl0bGUsICJDaGFuZ2VkIHRoZSB0aXRsZSBmcm9tIGEgc2NyaXB0ISIpCisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3dpdGhMb2FkSHRtbCgpIHsKKyAgICAgICAgICAg
IGxvYWRTcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkSHRtbCgiPGh0bWw+PGhl
YWQ+PHRpdGxlPlVzaW5nIGxvYWRIdG1sKCk8L3RpdGxlPjwvaGVhZD48Ym9keT5IaTwvYm9keT48
L2h0bWw+IikKKyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJl
KHdlYlZpZXcudGl0bGUsICJDaGFuZ2VkIHRoZSB0aXRsZSBmcm9tIGEgc2NyaXB0ISIpCisgICAg
ICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVudmlyb25tZW50L3RzdF9kb21Jc1NoYXJlZC5x
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNj
cmlwdEVudmlyb25tZW50L3RzdF9kb21Jc1NoYXJlZC5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTliMWU2ZjIw
MWJhMjU3YjdjM2U1OTFlYThmNTUwZDAyNzA4NjllNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJv
bm1lbnQvdHN0X2RvbUlzU2hhcmVkLnFtbApAQCAtMCwwICsxLDExOCBAQAoraW1wb3J0IFF0UXVp
Y2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0
V2ViS2l0LmV4cGVyaW1lbnRhbCAzLjAKKworV2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKwor
ICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgV2ViU2NyaXB0RW52aXJvbm1l
bnQgeworICAgICAgICBpZDogZmlyc3RNYW5pcHVsYXRvcgorICAgICAgICBwcm9wZXJ0eSBzdHJp
bmcgbGFzdE1lc3NhZ2UKKworICAgICAgICB2aWV3OiB3ZWJWaWV3CisgICAgICAgIHNvdXJjZTog
UXQucmVzb2x2ZWRVcmwoImRvbS1tYW5pcHVsYXRvci5qcyIpCisgICAgICAgIG9uTWVzc2FnZVJl
Y2VpdmVkOiB7CisgICAgICAgICAgICBsYXN0TWVzc2FnZSA9IG1lc3NhZ2UuZGF0YQorICAgICAg
ICB9CisgICAgfQorCisgICAgV2ViU2NyaXB0RW52aXJvbm1lbnQgeworICAgICAgICBpZDogc2Vj
b25kTWFuaXB1bGF0b3IKKyAgICAgICAgcHJvcGVydHkgc3RyaW5nIGxhc3RNZXNzYWdlCisKKyAg
ICAgICAgdmlldzogd2ViVmlldworICAgICAgICBzb3VyY2U6IFF0LnJlc29sdmVkVXJsKCJkb20t
bWFuaXB1bGF0b3IuanMiKQorICAgICAgICBvbk1lc3NhZ2VSZWNlaXZlZDogeworICAgICAgICAg
ICAgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlLmRhdGEKKyAgICAgICAgfQorICAgIH0KKworICAgIFNp
Z25hbFNweSB7CisgICAgICAgIGlkOiBsb2FkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldwor
ICAgICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAgICB9CisKKyAgICBTaWduYWxT
cHkgeworICAgICAgICBpZDogZmlyc3RTcHkKKyAgICAgICAgdGFyZ2V0OiBmaXJzdE1hbmlwdWxh
dG9yCisgICAgICAgIHNpZ25hbE5hbWU6ICJtZXNzYWdlUmVjZWl2ZWQiCisgICAgfQorCisgICAg
U2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHNlY29uZFNweQorICAgICAgICB0YXJnZXQ6IHNlY29u
ZE1hbmlwdWxhdG9yCisgICAgICAgIHNpZ25hbE5hbWU6ICJtZXNzYWdlUmVjZWl2ZWQiCisgICAg
fQorCisgICAgVGVzdENhc2UgeworICAgICAgICBuYW1lOiAiV2ViU2NyaXB0RW52aXJvbm1lbnRE
b21Jc1NoYXJlZCIKKworICAgICAgICBmdW5jdGlvbiBpbml0KCkgeworICAgICAgICAgICAgbG9h
ZFNweS5jbGVhcigpCisgICAgICAgICAgICBmaXJzdFNweS5jbGVhcigpCisgICAgICAgICAgICBz
ZWNvbmRTcHkuY2xlYXIoKQorICAgICAgICAgICAgd2ViVmlldy5sb2FkSHRtbCgiPGh0bWw+PGhl
YWQ+PHRpdGxlPlRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT5IaTwvYm9keT48L2h0bWw+IikKKyAg
ICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBw
b3N0TWVzc2FnZUFuZFdhaXRGb3JPSyhtYW5pcHVsYXRvciwgbWVzc2FnZSkgeworICAgICAgICAg
ICAgbWFuaXB1bGF0b3IucG9zdE1lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIChtYW5p
cHVsYXRvciA9PT0gZmlyc3RNYW5pcHVsYXRvcikKKyAgICAgICAgICAgICAgICBmaXJzdFNweS53
YWl0KCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZWNvbmRTcHkud2FpdCgp
CisgICAgICAgICAgICBjb21wYXJlKG1hbmlwdWxhdG9yLmxhc3RNZXNzYWdlLCAiT0siKQorICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdmVyaWZ5UGFyYWdyYXBoQ291bnQoZXhwZWN0ZWRD
b3VudCkgeworICAgICAgICAgICAgZmlyc3RNYW5pcHVsYXRvci5wb3N0TWVzc2FnZSgiY291bnRQ
YXJhZ3JhcGhzIikKKyAgICAgICAgICAgIGZpcnN0U3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShmaXJzdE1hbmlwdWxhdG9yLmxhc3RNZXNzYWdlLCBleHBlY3RlZENvdW50LnRvU3RyaW5n
KCkpCisKKyAgICAgICAgICAgIHNlY29uZE1hbmlwdWxhdG9yLnBvc3RNZXNzYWdlKCJjb3VudFBh
cmFncmFwaHMiKQorICAgICAgICAgICAgc2Vjb25kU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZShzZWNvbmRNYW5pcHVsYXRvci5sYXN0TWVzc2FnZSwgZXhwZWN0ZWRDb3VudC50b1N0cmlu
ZygpKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9kb21Jc1NoYXJlZCgpIHsK
KyAgICAgICAgICAgIHZlcmlmeVBhcmFncmFwaENvdW50KDApCisKKyAgICAgICAgICAgIHBvc3RN
ZXNzYWdlQW5kV2FpdEZvck9LKGZpcnN0TWFuaXB1bGF0b3IsICJhZGRQYXJhZ3JhcGgiKTsKKyAg
ICAgICAgICAgIHZlcmlmeVBhcmFncmFwaENvdW50KDEpCisKKyAgICAgICAgICAgIHBvc3RNZXNz
YWdlQW5kV2FpdEZvck9LKHNlY29uZE1hbmlwdWxhdG9yLCAiYWRkUGFyYWdyYXBoIik7CisgICAg
ICAgICAgICB2ZXJpZnlQYXJhZ3JhcGhDb3VudCgyKQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gdmVyaWZ5TmFtZXMoZmlyc3RFeHBlY3RlZE5hbWUsIHNlY29uZEV4cGVjdGVkTmFtZSkg
eworICAgICAgICAgICAgZmlyc3RNYW5pcHVsYXRvci5wb3N0TWVzc2FnZSgiZ2V0TmFtZSIpCisg
ICAgICAgICAgICBmaXJzdFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoZmlyc3RNYW5p
cHVsYXRvci5sYXN0TWVzc2FnZSwgZmlyc3RFeHBlY3RlZE5hbWUpCisKKyAgICAgICAgICAgIHNl
Y29uZE1hbmlwdWxhdG9yLnBvc3RNZXNzYWdlKCJnZXROYW1lIikKKyAgICAgICAgICAgIHNlY29u
ZFNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUoc2Vjb25kTWFuaXB1bGF0b3IubGFzdE1l
c3NhZ2UsIHNlY29uZEV4cGVjdGVkTmFtZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RfanNOb3RTaGFyZWQoKSB7CisgICAgICAgICAgICB2YXIgbmFtZSA9ICJkb21NYW5pcHVs
YXRvciIKKyAgICAgICAgICAgIHZhciByZXZlcnNlZE5hbWUgPSBuYW1lLnNwbGl0KCIiKS5yZXZl
cnNlKCkuam9pbigiIik7CisKKyAgICAgICAgICAgIHZlcmlmeU5hbWVzKG5hbWUsIG5hbWUpOwor
CisgICAgICAgICAgICBwb3N0TWVzc2FnZUFuZFdhaXRGb3JPSyhmaXJzdE1hbmlwdWxhdG9yLCAi
cmV2ZXJzZU5hbWUiKTsKKyAgICAgICAgICAgIHZlcmlmeU5hbWVzKHJldmVyc2VkTmFtZSwgbmFt
ZSk7CisKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlQW5kV2FpdEZvck9LKHNlY29uZE1hbmlwdWxh
dG9yLCAicmV2ZXJzZU5hbWUiKTsKKyAgICAgICAgICAgIHZlcmlmeU5hbWVzKHJldmVyc2VkTmFt
ZSwgcmV2ZXJzZWROYW1lKTsKKworICAgICAgICAgICAgcG9zdE1lc3NhZ2VBbmRXYWl0Rm9yT0so
Zmlyc3RNYW5pcHVsYXRvciwgInJldmVyc2VOYW1lIik7CisgICAgICAgICAgICB2ZXJpZnlOYW1l
cyhuYW1lLCByZXZlcnNlZE5hbWUpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRF
bnZpcm9ubWVudC90c3RfbWVzc2FnaW5nLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvdHN0X21lc3NhZ2luZy5x
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTZjNDcwNTZjMTA2MDhhM2RlZTBhYzQ4ODcwYWU2NzVlNWYyMzJlZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViU2NyaXB0RW52aXJvbm1lbnQvdHN0X21lc3NhZ2luZy5xbWwKQEAgLTAsMCAr
MSw1MCBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0
V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAzLjAKKworV2ViVmlldyB7
CisgICAgaWQ6IHdlYlZpZXcKKworICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDMwMAorCisg
ICAgV2ViU2NyaXB0RW52aXJvbm1lbnQgeworICAgICAgICBpZDogc2NyaXB0RW52CisgICAgICAg
IHByb3BlcnR5IHN0cmluZyBsYXN0TWVzc2FnZQorCisgICAgICAgIHZpZXc6IHdlYlZpZXcKKyAg
ICAgICAgc291cmNlOiBRdC5yZXNvbHZlZFVybCgiZWNoby1yZXZlcnNlZC1tZXNzYWdlcy5qcyIp
CisgICAgICAgIG9uTWVzc2FnZVJlY2VpdmVkOiB7CisgICAgICAgICAgICBsYXN0TWVzc2FnZSA9
IG1lc3NhZ2UuZGF0YQorICAgICAgICB9CisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAg
ICAgaWQ6IGxvYWRTcHkKKyAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3CisgICAgICAgIHNpZ25hbE5h
bWU6ICJsb2FkU3VjY2VlZGVkIgorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlk
OiBtZXNzYWdlU3B5CisgICAgICAgIHRhcmdldDogc2NyaXB0RW52CisgICAgICAgIHNpZ25hbE5h
bWU6ICJsYXN0TWVzc2FnZUNoYW5nZWQiCisgICAgfQorCisgICAgVGVzdENhc2UgeworICAgICAg
ICBuYW1lOiAiV2ViU2NyaXB0RW52aXJvbm1lbnRNZXNzYWdpbmciCisKKyAgICAgICAgZnVuY3Rp
b24gdGVzdF9iYXNpYygpIHsKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZEh0bWwoIjxodG1sPjxo
ZWFkPjx0aXRsZT5UZXN0PC90aXRsZT48L2hlYWQ+PGJvZHk+SGk8L2JvZHk+PC9odG1sPiIpCisg
ICAgICAgICAgICBsb2FkU3B5LndhaXQoKQorCisgICAgICAgICAgICBzY3JpcHRFbnYucG9zdE1l
c3NhZ2UoIkhlbGxvIikKKyAgICAgICAgICAgIG1lc3NhZ2VTcHkud2FpdCgpCisgICAgICAgICAg
ICBjb21wYXJlKHNjcmlwdEVudi5sYXN0TWVzc2FnZSwgIm9sbGVIIikKKyAgICAgICAgICAgIHNj
cmlwdEVudi5wb3N0TWVzc2FnZSgiSGkiKQorICAgICAgICAgICAgbWVzc2FnZVNweS53YWl0KCkK
KyAgICAgICAgICAgIGNvbXBhcmUoc2NyaXB0RW52Lmxhc3RNZXNzYWdlLCAiaUgiKQorICAgICAg
ICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRFbnZpcm9ubWVudC90c3RfbXVsdGlwbGUucW1sIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJTY3JpcHRF
bnZpcm9ubWVudC90c3RfbXVsdGlwbGUucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2YzE3ZDgzYzgwMmU3ZmFi
ZDQ0YTUwMDRhYjY2YjQ0MWQwNzgwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlNjcmlwdEVudmlyb25tZW50L3Rz
dF9tdWx0aXBsZS5xbWwKQEAgLTAsMCArMSw4OCBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBv
cnQgUXRUZXN0IDEuMAoraW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVy
aW1lbnRhbCAzLjAKKworV2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKworICAgIHdpZHRoOiA0
MDAKKyAgICBoZWlnaHQ6IDMwMAorCisgICAgV2ViU2NyaXB0RW52aXJvbm1lbnQgeworICAgICAg
ICBpZDogc2NyaXB0RW52CisgICAgICAgIHByb3BlcnR5IHN0cmluZyBsYXN0TWVzc2FnZTogIiIK
KworICAgICAgICB2aWV3OiB3ZWJWaWV3CisgICAgICAgIHNvdXJjZTogUXQucmVzb2x2ZWRVcmwo
ImVjaG8tbWVzc2FnZXMuanMiKQorICAgICAgICBvbk1lc3NhZ2VSZWNlaXZlZDogeworICAgICAg
ICAgICAgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlLmRhdGEKKyAgICAgICAgfQorICAgIH0KKworICAg
IFdlYlNjcmlwdEVudmlyb25tZW50IHsKKyAgICAgICAgaWQ6IHJldmVyc2VkU2NyaXB0RW52Cisg
ICAgICAgIHByb3BlcnR5IHN0cmluZyBsYXN0TWVzc2FnZTogIiIKKworICAgICAgICB2aWV3OiB3
ZWJWaWV3CisgICAgICAgIHNvdXJjZTogUXQucmVzb2x2ZWRVcmwoImVjaG8tcmV2ZXJzZWQtbWVz
c2FnZXMuanMiKQorICAgICAgICBvbk1lc3NhZ2VSZWNlaXZlZDogeworICAgICAgICAgICAgbGFz
dE1lc3NhZ2UgPSBtZXNzYWdlLmRhdGEKKyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNw
eSB7CisgICAgICAgIGlkOiBsb2FkU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAg
ICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAgICB9CisKKyAgICBTaWduYWxTcHkgewor
ICAgICAgICBpZDogbWVzc2FnZVNweQorICAgICAgICB0YXJnZXQ6IHNjcmlwdEVudgorICAgICAg
ICBzaWduYWxOYW1lOiAibGFzdE1lc3NhZ2VDaGFuZ2VkIgorICAgIH0KKworICAgIFNpZ25hbFNw
eSB7CisgICAgICAgIGlkOiByZXZlcnNlZE1lc3NhZ2VTcHkKKyAgICAgICAgdGFyZ2V0OiByZXZl
cnNlZFNjcmlwdEVudgorICAgICAgICBzaWduYWxOYW1lOiAibGFzdE1lc3NhZ2VDaGFuZ2VkIgor
ICAgIH0KKworICAgIFRlc3RDYXNlIHsKKyAgICAgICAgbmFtZTogIldlYlNjcmlwdEVudmlyb25t
ZW50TXVsdGlwbGUiCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9tZXNzYWdlSXNvbGF0aW9uKCkg
eworICAgICAgICAgICAgd2ViVmlldy5sb2FkSHRtbCgiPGh0bWw+PGhlYWQ+PHRpdGxlPlRlc3Q8
L3RpdGxlPjwvaGVhZD48Ym9keT5IaTwvYm9keT48L2h0bWw+IikKKyAgICAgICAgICAgIGxvYWRT
cHkud2FpdCgpCisKKyAgICAgICAgICAgIHNjcmlwdEVudi5wb3N0TWVzc2FnZSgiSGVsbG8iKQor
ICAgICAgICAgICAgbWVzc2FnZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobWVzc2Fn
ZVNweS5jb3VudCwgMSkKKyAgICAgICAgICAgIGNvbXBhcmUocmV2ZXJzZWRNZXNzYWdlU3B5LmNv
dW50LCAwKQorICAgICAgICAgICAgY29tcGFyZShzY3JpcHRFbnYubGFzdE1lc3NhZ2UsICJIZWxs
byIpCisgICAgICAgICAgICBjb21wYXJlKHJldmVyc2VkU2NyaXB0RW52Lmxhc3RNZXNzYWdlLCAi
IikKKworICAgICAgICAgICAgc2NyaXB0RW52LnBvc3RNZXNzYWdlKCJIaSIpCisgICAgICAgICAg
ICBtZXNzYWdlU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZShtZXNzYWdlU3B5LmNvdW50
LCAyKQorICAgICAgICAgICAgY29tcGFyZShyZXZlcnNlZE1lc3NhZ2VTcHkuY291bnQsIDApCisg
ICAgICAgICAgICBjb21wYXJlKHNjcmlwdEVudi5sYXN0TWVzc2FnZSwgIkhpIikKKyAgICAgICAg
ICAgIGNvbXBhcmUocmV2ZXJzZWRTY3JpcHRFbnYubGFzdE1lc3NhZ2UsICIiKQorCisgICAgICAg
ICAgICByZXZlcnNlZFNjcmlwdEVudi5wb3N0TWVzc2FnZSgiSGFoYSIpCisgICAgICAgICAgICBy
ZXZlcnNlZE1lc3NhZ2VTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKG1lc3NhZ2VTcHku
Y291bnQsIDIpCisgICAgICAgICAgICBjb21wYXJlKHJldmVyc2VkTWVzc2FnZVNweS5jb3VudCwg
MSkKKyAgICAgICAgICAgIGNvbXBhcmUoc2NyaXB0RW52Lmxhc3RNZXNzYWdlLCAiSGkiKQorICAg
ICAgICAgICAgY29tcGFyZShyZXZlcnNlZFNjcmlwdEVudi5sYXN0TWVzc2FnZSwgImFoYUgiKQor
CisgICAgICAgICAgICBzY3JpcHRFbnYucG9zdE1lc3NhZ2UoIlNlZSB5b3UiKQorICAgICAgICAg
ICAgbWVzc2FnZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUobWVzc2FnZVNweS5jb3Vu
dCwgMykKKyAgICAgICAgICAgIGNvbXBhcmUocmV2ZXJzZWRNZXNzYWdlU3B5LmNvdW50LCAxKQor
ICAgICAgICAgICAgY29tcGFyZShzY3JpcHRFbnYubGFzdE1lc3NhZ2UsICJTZWUgeW91IikKKyAg
ICAgICAgICAgIGNvbXBhcmUocmV2ZXJzZWRTY3JpcHRFbnYubGFzdE1lc3NhZ2UsICJhaGFIIikK
KyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8KaW5kZXggN2U4NTdiMjFh
YzUyZGZhOGU4ZjE1ZWY1NTlhYzljNDE0YTExZmMyYS4uNDZhMWEwYzE1ODgzYzM4ZDk3N2UwNDMz
ODM3YmQxNjc2MjIxMzc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8KQEAgLTIxLDYgKzIxLDEw
IEBAIE9USEVSX0ZJTEVTICs9IFwKICAgICBEZXNrdG9wQmVoYXZpb3IvdHN0X2xvYWRIdG1sLnFt
bCBcCiAgICAgRGVza3RvcEJlaGF2aW9yL3RzdF9tZXNzYWdpbmcucW1sIFwKICAgICBEZXNrdG9w
QmVoYXZpb3IvdHN0X25hdmlnYXRpb25SZXF1ZXN0ZWQucW1sIFwKKyAgICBXZWJTY3JpcHRFbnZp
cm9ubWVudC90c3RfYmFzaWMucW1sIFwKKyAgICBXZWJTY3JpcHRFbnZpcm9ubWVudC90c3RfZG9t
SXNTaGFyZWQucW1sIFwKKyAgICBXZWJTY3JpcHRFbnZpcm9ubWVudC90c3RfbWVzc2FnaW5nLnFt
bCBcCisgICAgV2ViU2NyaXB0RW52aXJvbm1lbnQvdHN0X211bHRpcGxlLnFtbCBcCiAgICAgV2Vi
Vmlldy90c3RfZmF2SWNvbkxvYWQucW1sIFwKICAgICBXZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwg
XAogICAgIFdlYlZpZXcvdHN0X2dlb3Blcm1pc3Npb24ucW1sIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IDFkYjRlYWE5YjIyYjE2NDFlNDNmZjFmNDVhMTM5ZGJmNmVm
NTI3YzguLmMyZTBkNjY4ZmNmMTZjNzhhNzAyZGYyZGYzNGY3YWIzMjZkZWY0NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTA1LDYgKzEwNSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzRWRpdGFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZp
Z2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90LCBjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFBy
b3h5KikgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZDBlNTVkYWYwZmM4YjBmZTk3ZjJjNzEwM2U4YTNhNTNkMTA3NTVlNC4uMDBl
ZWE0MzI5MGY3MTliY2IxYTAyZDgzM2VkMDk0ZGNkNzcwODZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIzNDcsNiArMjM0NywxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3Qg
U3RyaW5nJiBjb250ZW50cwogICAgIG1fcGFnZUNsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
TmF2aWdhdG9yUXRPYmplY3QoY29udGVudHMpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tU2NyaXB0RW52aXJvbm1lbnQodWludDY0X3QgaWQsIGNvbnN0IFN0
cmluZyYgY29udGVudHMpCit7CisgICAgbV9wYWdlQ2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZUZy
b21TY3JpcHRFbnZpcm9ubWVudChpZCwgY29udGVudHMpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewogICAg
IG1fcGFnZUNsaWVudC0+aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwODM2YjAwNzg4YzVhMTkzMzAwMWIw
MGVhODllMTUyODAyNDEyOGQxLi4xMmZjZDFjNmI5MmM1ZjU2YTZkY2Y0YmZkZGQwMjFlZWViNzk0
YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01NDEsNiAr
NTQxLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIHZvaWQgZmluZFpvb21hYmxl
QXJlYUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90LCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kik7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFn
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNw
cAppbmRleCA0MTUzNTA1MGE0ZTFiMzJkNjliMTI0MmM0NzhhZjBhOGJjZTcwM2QxLi5mNDkyMjEw
ZTNkMTJmMmEyNzliMGRiODUzN2QxYWFjZDJkOGEyOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcApAQCAtMTg4LDYgKzE4OCwxMSBAQCB2b2lkIFF0
UGFnZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3
KS0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QobWVzc2FnZSk7CiB9CiAK
K3ZvaWQgUXRQYWdlQ2xpZW50OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21TY3JpcHRFbnZpcm9ubWVu
dCh1aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tU2NyaXB0RW52
aXJvbm1lbnQoaWQsIG1lc3NhZ2UpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHZv
aWQgUXRQYWdlQ2xpZW50Ojpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hF
dmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0UGFnZUNsaWVudC5oCmluZGV4IDZlNzI2MDM2YTdkMzI2M2I0ZDBhODJiZWZh
ODRlYjY2NDI4MmUzM2QuLjdiODlmM2Q1MGQyNjQyNmRmZTA1YzEzYTk4MThkN2YxZjJhYWZjNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmgKQEAgLTQ2LDYg
KzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCk7CiAgICAg
dmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90LCBj
b25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVu
dHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCmluZGV4IDI5
YTU0N2JhOThkODExNjhiZDRhOTdmZWE1YzM3Njg2MDgzYTI3MGYuLjU5OThlZjc5M2JmNTRmOGUz
NzA4NTdiYmY4NDNhZGRmNjBlNmE4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYkNvbnRleHQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdLQXJyYXkuaD4KKyNp
bmNsdWRlIDxXS051bWJlci5oPgogI2luY2x1ZGUgPFdLUGFnZS5oPgogI2luY2x1ZGUgPFdLU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8V0tUeXBlLmg+CkBAIC0xMDIsNiArMTAzLDU2IEBAIHZvaWQgUXRX
ZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvTmF2aWdhdG9yUXRPYmplY3QoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlUHJveHksIGNvCiAgICAgbV9jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUobWVzc2FnZU5hbWUsIGJvZHkuZ2V0KCkpOwogfQogCitzdGF0aWMgUGFzc1JlZlB0cjxNdXRh
YmxlQXJyYXk+IGNyZWF0ZUJvZHlGb3JTY3JpcHRFbnZpcm9ubWVudChXZWJQYWdlUHJveHkqIHdl
YlBhZ2VQcm94eSwgdWludDY0X3QgaWQpCit7CisgICAgUmVmUHRyPE11dGFibGVBcnJheT4gYm9k
eSA9IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAgYm9keS0+YXBwZW5kKHdlYlBhZ2VQcm94
eSk7CisgICAgUmVmUHRyPFdlYlVJbnQ2ND4gaWRSZWYgPSBXZWJVSW50NjQ6OmNyZWF0ZShpZCk7
CisgICAgYm9keS0+YXBwZW5kKGlkUmVmLmdldCgpKTsKKyAgICByZXR1cm4gYm9keS5yZWxlYXNl
KCk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0OjpyZWdpc3RlclNjcmlwdEVudmlyb25tZW50KFdl
YlBhZ2VQcm94eSogd2ViUGFnZVByb3h5LCB1aW50NjRfdCBpZCkKK3sKKyAgICBzdGF0aWMgU3Ry
aW5nIG1lc3NhZ2VOYW1lKCJSZWdpc3RlclNjcmlwdEVudmlyb25tZW50Iik7CisgICAgUmVmUHRy
PE11dGFibGVBcnJheT4gYm9keSA9IGNyZWF0ZUJvZHlGb3JTY3JpcHRFbnZpcm9ubWVudCh3ZWJQ
YWdlUHJveHksIGlkKTsKKyAgICBtX2NvbnRleHQtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZShtZXNzYWdlTmFtZSwgYm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgUXRXZWJDb250ZXh0Ojp1bnJl
Z2lzdGVyU2NyaXB0RW52aXJvbm1lbnQoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHksIHVpbnQ2
NF90IGlkKQoreworICAgIHN0YXRpYyBTdHJpbmcgbWVzc2FnZU5hbWUoIlVucmVnaXN0ZXJTY3Jp
cHRFbnZpcm9ubWVudCIpOworICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGJvZHkgPSBjcmVhdGVC
b2R5Rm9yU2NyaXB0RW52aXJvbm1lbnQod2ViUGFnZVByb3h5LCBpZCk7CisgICAgbV9jb250ZXh0
LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIGJvZHkuZ2V0KCkpOwor
fQorCit2b2lkIFF0V2ViQ29udGV4dDo6YWRkU291cmNlVG9TY3JpcHRFbnZpcm9ubWVudChXZWJQ
YWdlUHJveHkqIHdlYlBhZ2VQcm94eSwgdWludDY0X3QgaWQsIGNvbnN0IFFTdHJpbmcmIHNvdXJj
ZSkKK3sKKyAgICBzdGF0aWMgU3RyaW5nIG1lc3NhZ2VOYW1lKCJBZGRTb3VyY2VUb1NjcmlwdEVu
dmlyb25tZW50Iik7CisgICAgUmVmUHRyPE11dGFibGVBcnJheT4gYm9keSA9IGNyZWF0ZUJvZHlG
b3JTY3JpcHRFbnZpcm9ubWVudCh3ZWJQYWdlUHJveHksIGlkKTsKKyAgICBSZWZQdHI8V2ViU3Ry
aW5nPiBjb250ZW50cyA9IFdlYlN0cmluZzo6Y3JlYXRlKFN0cmluZyhzb3VyY2UpKTsKKyAgICBi
b2R5LT5hcHBlbmQoY29udGVudHMuZ2V0KCkpOworICAgIG1fY29udGV4dC0+cG9zdE1lc3NhZ2VU
b0luamVjdGVkQnVuZGxlKG1lc3NhZ2VOYW1lLCBib2R5LmdldCgpKTsKK30KKwordm9pZCBRdFdl
YkNvbnRleHQ6OnJlbW92ZVNvdXJjZUZyb21TY3JpcHRFbnZpcm9ubWVudChXZWJQYWdlUHJveHkq
IHdlYlBhZ2VQcm94eSwgdWludDY0X3QgaWQsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkKK3sKKyAg
ICBzdGF0aWMgU3RyaW5nIG1lc3NhZ2VOYW1lKCJSZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJv
bm1lbnQiKTsKKyAgICBSZWZQdHI8TXV0YWJsZUFycmF5PiBib2R5ID0gY3JlYXRlQm9keUZvclNj
cmlwdEVudmlyb25tZW50KHdlYlBhZ2VQcm94eSwgaWQpOworICAgIFJlZlB0cjxXZWJTdHJpbmc+
IGNvbnRlbnRzID0gV2ViU3RyaW5nOjpjcmVhdGUoU3RyaW5nKHNvdXJjZSkpOworICAgIGJvZHkt
PmFwcGVuZChjb250ZW50cy5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIGJvZHkuZ2V0KCkpOworfQorCit2b2lkIFF0V2ViQ29u
dGV4dDo6cG9zdE1lc3NhZ2VUb1NjcmlwdEVudmlyb25tZW50KFdlYlBhZ2VQcm94eSogd2ViUGFn
ZVByb3h5LCB1aW50NjRfdCBpZCwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBzdGF0
aWMgU3RyaW5nIG1lc3NhZ2VOYW1lKCJNZXNzYWdlVG9TY3JpcHRFbnZpcm9ubWVudCIpOworICAg
IFJlZlB0cjxNdXRhYmxlQXJyYXk+IGJvZHkgPSBjcmVhdGVCb2R5Rm9yU2NyaXB0RW52aXJvbm1l
bnQod2ViUGFnZVByb3h5LCBpZCk7CisgICAgUmVmUHRyPFdlYlN0cmluZz4gY29udGVudHMgPSBX
ZWJTdHJpbmc6OmNyZWF0ZShTdHJpbmcobWVzc2FnZSkpOworICAgIGJvZHktPmFwcGVuZChjb250
ZW50cy5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
bWVzc2FnZU5hbWUsIGJvZHkuZ2V0KCkpOworfQorCiBRdFdlYkNvbnRleHQqIFF0V2ViQ29udGV4
dDo6Y29udGV4dEJ5SUQodWludDY0X3QgaWQpCiB7CiAgICAgcmV0dXJuIGNvbnRleHRNYXAuZ2V0
KGlkKTsKQEAgLTEzNyw5ICsxODgsMTQgQEAgdm9pZCBRdFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYKIAogdm9p
ZCBRdFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3Ry
aW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0gICAgaWYgKCFX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiTWVzc2FnZUZyb21OYXZp
Z2F0b3JRdE9iamVjdCIpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0
IikpCisgICAgICAgIGhhbmRsZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QobWVzc2FnZUJv
ZHkpOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50IikpCisgICAgICAgIGhhbmRsZU1lc3Nh
Z2VGcm9tU2NyaXB0RW52aXJvbm1lbnQobWVzc2FnZUJvZHkpOworfQogCit2b2lkIFF0V2ViQ29u
dGV4dDo6aGFuZGxlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHkpCit7CiAgICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKICAgICBBU1NFUlQoV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpID09IFdLQXJyYXlHZXRUeXBlSUQoKSk7CiAKQEAgLTE1NCw0ICsyMTAs
MjIgQEAgdm9pZCBRdFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLAogICAgIHRvSW1wbChwYWdlKS0+ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QodG9JbXBsKHN0ciktPnN0cmluZygpKTsKIH0K
IAordm9pZCBRdFdlYkNvbnRleHQ6OmhhbmRsZU1lc3NhZ2VGcm9tU2NyaXB0RW52aXJvbm1lbnQo
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQoreworICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CisgICAg
QVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5R2V0VHlwZUlEKCkpOwor
CisgICAgV0tBcnJheVJlZiBib2R5ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJv
ZHkpOworICAgIEFTU0VSVChXS0FycmF5R2V0U2l6ZShib2R5KSA9PSAzKTsKKyAgICBBU1NFUlQo
V0tHZXRUeXBlSUQoV0tBcnJheUdldEl0ZW1BdEluZGV4KGJvZHksIDApKSA9PSBXS1BhZ2VHZXRU
eXBlSUQoKSk7CisgICAgQVNTRVJUKFdLR2V0VHlwZUlEKFdLQXJyYXlHZXRJdGVtQXRJbmRleChi
b2R5LCAxKSkgPT0gV0tVSW50NjRHZXRUeXBlSUQoKSk7CisgICAgQVNTRVJUKFdLR2V0VHlwZUlE
KFdLQXJyYXlHZXRJdGVtQXRJbmRleChib2R5LCAyKSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7
CisKKyAgICBXS1BhZ2VSZWYgcGFnZSA9IHN0YXRpY19jYXN0PFdLUGFnZVJlZj4oV0tBcnJheUdl
dEl0ZW1BdEluZGV4KGJvZHksIDApKTsKKyAgICBXS1VJbnQ2NFJlZiBpZCA9IHN0YXRpY19jYXN0
PFdLVUludDY0UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOworICAgIFdLU3Ry
aW5nUmVmIHN0ciA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5k
ZXgoYm9keSwgMikpOworCisgICAgdG9JbXBsKHBhZ2UpLT5kaWRSZWNlaXZlTWVzc2FnZUZyb21T
Y3JpcHRFbnZpcm9ubWVudChXS1VJbnQ2NEdldFZhbHVlKGlkKSwgdG9JbXBsKHN0ciktPnN0cmlu
ZygpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5o
CmluZGV4IDIwMmRiMjI0MjY5OGJhM2U0YjdhM2M3YzQ5YWI2NDI3MWI1MGRmZTIuLjBiZWE0MjFk
NmQ0MTE3MDYzMmNjYTZiMzIwMTk1MWQ3ZDFjOTI0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJDb250ZXh0LmgKQEAgLTU2LDYgKzU2LDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZChXZWJQYWdlUHJveHkqLCBib29sKTsKICAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdChXZWJQYWdlUHJveHkqLCBjb25z
dCBRU3RyaW5nJik7CiAKKyAgICB2b2lkIHJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQoV2ViUGFn
ZVByb3h5KiwgdWludDY0X3QpOworICAgIHZvaWQgdW5yZWdpc3RlclNjcmlwdEVudmlyb25tZW50
KFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90KTsKKyAgICB2b2lkIGFkZFNvdXJjZVRvU2NyaXB0RW52
aXJvbm1lbnQoV2ViUGFnZVByb3h5KiwgdWludDY0X3QsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZSk7
CisgICAgdm9pZCByZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJvbm1lbnQoV2ViUGFnZVByb3h5
KiwgdWludDY0X3QsIGNvbnN0IFFTdHJpbmcmIHNvdXJjZSk7CisgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2NyaXB0RW52aXJvbm1lbnQoV2ViUGFnZVByb3h5KiwgdWludDY0X3QsIGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UpOworCiAgICAgdWludDY0X3QgY29udGV4dElEKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZXh0SUQ7IH0KIAogICAgIHN0YXRpYyBRdFdlYkNvbnRleHQqIGNvbnRleHRCeUlEKHVp
bnQ2NF90IGlkKTsKQEAgLTY5LDYgKzc1LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdLU3RyaW5n
UmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCisgICAgdm9pZCBoYW5kbGVNZXNz
YWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CisgICAgdm9p
ZCBoYW5kbGVNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50KFdLVHlwZVJlZiBtZXNzYWdlQm9k
eSk7CisKICAgICBzdGF0aWMgUXRXZWJDb250ZXh0KiBzX2RlZmF1bHRDb250ZXh0OwogCiAgICAg
dWludDY0X3QgbV9jb250ZXh0SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0
L1F0QnVpbHRpbkJ1bmRsZS5jcHAKaW5kZXggZjBjMjhjZmQxYjkyOTA3ZmQ0MmZjYThmMDE1NjZj
MjhjZTNmZjA4Ni4uODM3NTQ2NzQxNDRkZmVmZWY2ZTMwN2NmYmUyNDE0NTM5NTUyMDI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlLmNwcApA
QCAtMTA0LDIxICsxMDQsNDAgQEAgUXRCdWlsdGluQnVuZGxlUGFnZSogUXRCdWlsdGluQnVuZGxl
OjpidW5kbGVQYWdlRm9yUGFnZVJlZihjb25zdCBXS0J1bmRsZVBhZ2VSZWYKIAogdm9pZCBRdEJ1
aWx0aW5CdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBX
S1R5cGVSZWYgbWVzc2FnZUJvZHkpCiB7Ci0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdCIpKQorICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiTWVzc2FnZVRvU2Ny
aXB0RW52aXJvbm1lbnQiKSkKKyAgICAgICAgaGFuZGxlTWVzc2FnZVRvU2NyaXB0RW52aXJvbm1l
bnQobWVzc2FnZUJvZHkpOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdCIpKQogICAgICAgICBo
YW5kbGVNZXNzYWdlVG9OYXZpZ2F0b3JRdE9iamVjdChtZXNzYWdlQm9keSk7CiAgICAgZWxzZSBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldE5hdmlnYXRv
clF0T2JqZWN0RW5hYmxlZCIpKQogICAgICAgICBoYW5kbGVTZXROYXZpZ2F0b3JRdE9iamVjdEVu
YWJsZWQobWVzc2FnZUJvZHkpOworICAgIGVsc2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJSZWdpc3RlclNjcmlwdEVudmlyb25tZW50IikpCisgICAgICAg
IGhhbmRsZVJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQobWVzc2FnZUJvZHkpOworICAgIGVsc2Ug
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJVbnJlZ2lzdGVy
U2NyaXB0RW52aXJvbm1lbnQiKSkKKyAgICAgICAgaGFuZGxlVW5yZWdpc3RlclNjcmlwdEVudmly
b25tZW50KG1lc3NhZ2VCb2R5KTsKKyAgICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQWRkU291cmNlVG9TY3JpcHRFbnZpcm9ubWVudCIpKQorICAg
ICAgICBoYW5kbGVBZGRTb3VyY2VUb1NjcmlwdEVudmlyb25tZW50KG1lc3NhZ2VCb2R5KTsKKyAg
ICBlbHNlIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVt
b3ZlU291cmNlRnJvbVNjcmlwdEVudmlyb25tZW50IikpCisgICAgICAgIGhhbmRsZVJlbW92ZVNv
dXJjZUZyb21TY3JpcHRFbnZpcm9ubWVudChtZXNzYWdlQm9keSk7CiB9CiAKKyNkZWZpbmUgQVNT
RVJUX0FSUkFZX1dJVEhfU0laRV8yKEJPRFksIFRZUEUwLCBUWVBFMSkgXAorICAgIEFTU0VSVChX
S0FycmF5R2V0U2l6ZShCT0RZKSA9PSAyKTsgXAorICAgIEFTU0VSVChXS0dldFR5cGVJRChXS0Fy
cmF5R2V0SXRlbUF0SW5kZXgoQk9EWSwgMCkpID09IFRZUEUwKTsgXAorICAgIEFTU0VSVChXS0dl
dFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoQk9EWSwgMSkpID09IFRZUEUxKTsKKworI2Rl
ZmluZSBBU1NFUlRfQVJSQVlfV0lUSF9TSVpFXzMoQk9EWSwgVFlQRTAsIFRZUEUxLCBUWVBFMikg
XAorICAgIEFTU0VSVChXS0FycmF5R2V0U2l6ZShCT0RZKSA9PSAzKTsgXAorICAgIEFTU0VSVChX
S0dldFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoQk9EWSwgMCkpID09IFRZUEUwKTsgXAor
ICAgIEFTU0VSVChXS0dldFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoQk9EWSwgMSkpID09
IFRZUEUxKTsgXAorICAgIEFTU0VSVChXS0dldFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgo
Qk9EWSwgMikpID09IFRZUEUyKTsKKwogdm9pZCBRdEJ1aWx0aW5CdW5kbGU6OmhhbmRsZU1lc3Nh
Z2VUb05hdmlnYXRvclF0T2JqZWN0KFdLVHlwZVJlZiBtZXNzYWdlQm9keSkKIHsKICAgICBBU1NF
UlQobWVzc2FnZUJvZHkpOwogICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0g
V0tBcnJheUdldFR5cGVJRCgpKTsKIAogICAgIFdLQXJyYXlSZWYgYm9keSA9IHN0YXRpY19jYXN0
PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICBBU1NFUlQoV0tBcnJheUdldFNpemUoYm9k
eSkgPT0gMik7Ci0gICAgQVNTRVJUKFdLR2V0VHlwZUlEKFdLQXJyYXlHZXRJdGVtQXRJbmRleChi
b2R5LCAwKSkgPT0gV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkpOwotICAgIEFTU0VSVChXS0dldFR5
cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpID09IFdLU3RyaW5nR2V0VHlwZUlE
KCkpOworICAgIEFTU0VSVF9BUlJBWV9XSVRIX1NJWkVfMihib2R5LCBXS0J1bmRsZVBhZ2VHZXRU
eXBlSUQoKSwgV0tTdHJpbmdHZXRUeXBlSUQoKSk7CiAKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSA9IHN0YXRpY19jYXN0PFdLQnVuZGxlUGFnZVJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGJv
ZHksIDApKTsKICAgICBXS1N0cmluZ1JlZiBjb250ZW50cyA9IHN0YXRpY19jYXN0PFdLU3RyaW5n
UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOwpAQCAtMTM1LDkgKzE1NCw3IEBA
IHZvaWQgUXRCdWlsdGluQnVuZGxlOjpoYW5kbGVTZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQo
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQogICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKIAogICAgIFdLQXJyYXlSZWYgYm9keSA9IHN0YXRp
Y19jYXN0PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICBBU1NFUlQoV0tBcnJheUdldFNp
emUoYm9keSkgPT0gMik7Ci0gICAgQVNTRVJUKFdLR2V0VHlwZUlEKFdLQXJyYXlHZXRJdGVtQXRJ
bmRleChib2R5LCAwKSkgPT0gV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkpOwotICAgIEFTU0VSVChX
S0dldFR5cGVJRChXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpID09IFdLQm9vbGVhbkdl
dFR5cGVJRCgpKTsKKyAgICBBU1NFUlRfQVJSQVlfV0lUSF9TSVpFXzIoYm9keSwgV0tCdW5kbGVQ
YWdlR2V0VHlwZUlEKCksIFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKIAogICAgIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlID0gc3RhdGljX2Nhc3Q8V0tCdW5kbGVQYWdlUmVmPihXS0FycmF5R2V0SXRlbUF0
SW5kZXgoYm9keSwgMCkpOwogICAgIFdLQm9vbGVhblJlZiBlbmFibGVkID0gc3RhdGljX2Nhc3Q8
V0tCb29sZWFuUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOwpAQCAtMTQ4LDQg
KzE2NSw5MiBAQCB2b2lkIFF0QnVpbHRpbkJ1bmRsZTo6aGFuZGxlU2V0TmF2aWdhdG9yUXRPYmpl
Y3RFbmFibGVkKFdLVHlwZVJlZiBtZXNzYWdlQm9keSkKICAgICBidW5kbGVQYWdlLT5zZXROYXZp
Z2F0b3JRdE9iamVjdEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgUXRCdWlsdGluQnVuZGxl
OjpoYW5kbGVSZWdpc3RlclNjcmlwdEVudmlyb25tZW50KFdLVHlwZVJlZiBtZXNzYWdlQm9keSkK
K3sKKyAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNz
YWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKKworICAgIFdLQXJyYXlSZWYgYm9keSA9
IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICBBU1NFUlRfQVJSQVlf
V0lUSF9TSVpFXzIoYm9keSwgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCksIFdLVUludDY0R2V0VHlw
ZUlEKCkpOworCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBzdGF0aWNfY2FzdDxXS0J1bmRs
ZVBhZ2VSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChib2R5LCAwKSk7CisgICAgV0tVSW50NjRS
ZWYgaWQgPSBzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGJv
ZHksIDEpKTsKKworICAgIFF0QnVpbHRpbkJ1bmRsZVBhZ2UqIGJ1bmRsZVBhZ2UgPSBidW5kbGVQ
YWdlRm9yUGFnZVJlZihwYWdlKTsKKyAgICBpZiAoIWJ1bmRsZVBhZ2UpCisgICAgICAgIHJldHVy
bjsKKyAgICBidW5kbGVQYWdlLT5yZWdpc3RlclNjcmlwdEVudmlyb25tZW50KFdLVUludDY0R2V0
VmFsdWUoaWQpKTsKK30KKwordm9pZCBRdEJ1aWx0aW5CdW5kbGU6OmhhbmRsZVVucmVnaXN0ZXJT
Y3JpcHRFbnZpcm9ubWVudChXS1R5cGVSZWYgbWVzc2FnZUJvZHkpCit7CisgICAgQVNTRVJUKG1l
c3NhZ2VCb2R5KTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQXJy
YXlHZXRUeXBlSUQoKSk7CisKKyAgICBXS0FycmF5UmVmIGJvZHkgPSBzdGF0aWNfY2FzdDxXS0Fy
cmF5UmVmPihtZXNzYWdlQm9keSk7CisgICAgQVNTRVJUX0FSUkFZX1dJVEhfU0laRV8yKGJvZHks
IFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpLCBXS1VJbnQ2NEdldFR5cGVJRCgpKTsKKworICAgIFdL
QnVuZGxlUGFnZVJlZiBwYWdlID0gc3RhdGljX2Nhc3Q8V0tCdW5kbGVQYWdlUmVmPihXS0FycmF5
R2V0SXRlbUF0SW5kZXgoYm9keSwgMCkpOworICAgIFdLVUludDY0UmVmIGlkID0gc3RhdGljX2Nh
c3Q8V0tVSW50NjRSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChib2R5LCAxKSk7CisKKyAgICBR
dEJ1aWx0aW5CdW5kbGVQYWdlKiBidW5kbGVQYWdlID0gYnVuZGxlUGFnZUZvclBhZ2VSZWYocGFn
ZSk7CisgICAgaWYgKCFidW5kbGVQYWdlKQorICAgICAgICByZXR1cm47CisgICAgYnVuZGxlUGFn
ZS0+dW5yZWdpc3RlclNjcmlwdEVudmlyb25tZW50KFdLVUludDY0R2V0VmFsdWUoaWQpKTsKK30K
Kwordm9pZCBRdEJ1aWx0aW5CdW5kbGU6OmhhbmRsZUFkZFNvdXJjZVRvU2NyaXB0RW52aXJvbm1l
bnQoV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KQoreworICAgIEFTU0VSVChtZXNzYWdlQm9keSk7Cisg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5R2V0VHlwZUlEKCkp
OworCisgICAgV0tBcnJheVJlZiBib2R5ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2Fn
ZUJvZHkpOworICAgIEFTU0VSVF9BUlJBWV9XSVRIX1NJWkVfMyhib2R5LCBXS0J1bmRsZVBhZ2VH
ZXRUeXBlSUQoKSwgV0tVSW50NjRHZXRUeXBlSUQoKSwgV0tTdHJpbmdHZXRUeXBlSUQoKSk7CisK
KyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IHN0YXRpY19jYXN0PFdLQnVuZGxlUGFnZVJlZj4o
V0tBcnJheUdldEl0ZW1BdEluZGV4KGJvZHksIDApKTsKKyAgICBXS1VJbnQ2NFJlZiBpZCA9IHN0
YXRpY19jYXN0PFdLVUludDY0UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOwor
ICAgIFdLU3RyaW5nUmVmIHNvdXJjZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5
R2V0SXRlbUF0SW5kZXgoYm9keSwgMikpOworCisgICAgUXRCdWlsdGluQnVuZGxlUGFnZSogYnVu
ZGxlUGFnZSA9IGJ1bmRsZVBhZ2VGb3JQYWdlUmVmKHBhZ2UpOworICAgIGlmICghYnVuZGxlUGFn
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGJ1bmRsZVBhZ2UtPmFkZFNvdXJjZVRvU2NyaXB0RW52
aXJvbm1lbnQoV0tVSW50NjRHZXRWYWx1ZShpZCksIHNvdXJjZSk7Cit9CisKK3ZvaWQgUXRCdWls
dGluQnVuZGxlOjpoYW5kbGVSZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJvbm1lbnQoV0tUeXBl
UmVmIG1lc3NhZ2VCb2R5KQoreworICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CisgICAgQVNTRVJU
KFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0FycmF5R2V0VHlwZUlEKCkpOworCisgICAg
V0tBcnJheVJlZiBib2R5ID0gc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpOwor
ICAgIEFTU0VSVF9BUlJBWV9XSVRIX1NJWkVfMyhib2R5LCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQo
KSwgV0tVSW50NjRHZXRUeXBlSUQoKSwgV0tTdHJpbmdHZXRUeXBlSUQoKSk7CisKKyAgICBXS0J1
bmRsZVBhZ2VSZWYgcGFnZSA9IHN0YXRpY19jYXN0PFdLQnVuZGxlUGFnZVJlZj4oV0tBcnJheUdl
dEl0ZW1BdEluZGV4KGJvZHksIDApKTsKKyAgICBXS1VJbnQ2NFJlZiBpZCA9IHN0YXRpY19jYXN0
PFdLVUludDY0UmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9keSwgMSkpOworICAgIFdLU3Ry
aW5nUmVmIHNvdXJjZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0
SW5kZXgoYm9keSwgMikpOworCisgICAgUXRCdWlsdGluQnVuZGxlUGFnZSogYnVuZGxlUGFnZSA9
IGJ1bmRsZVBhZ2VGb3JQYWdlUmVmKHBhZ2UpOworICAgIGlmICghYnVuZGxlUGFnZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGJ1bmRsZVBhZ2UtPnJlbW92ZVNvdXJjZUZyb21TY3JpcHRFbnZpcm9u
bWVudChXS1VJbnQ2NEdldFZhbHVlKGlkKSwgc291cmNlKTsKK30KKwordm9pZCBRdEJ1aWx0aW5C
dW5kbGU6OmhhbmRsZU1lc3NhZ2VUb1NjcmlwdEVudmlyb25tZW50KFdLVHlwZVJlZiBtZXNzYWdl
Qm9keSkKK3sKKyAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tBcnJheUdldFR5cGVJRCgpKTsKKworICAgIFdLQXJyYXlSZWYg
Ym9keSA9IHN0YXRpY19jYXN0PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICBBU1NFUlRf
QVJSQVlfV0lUSF9TSVpFXzMoYm9keSwgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCksIFdLVUludDY0
R2V0VHlwZUlEKCksIFdLU3RyaW5nR2V0VHlwZUlEKCkpOworCisgICAgV0tCdW5kbGVQYWdlUmVm
IHBhZ2UgPSBzdGF0aWNfY2FzdDxXS0J1bmRsZVBhZ2VSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRl
eChib2R5LCAwKSk7CisgICAgV0tVSW50NjRSZWYgaWQgPSBzdGF0aWNfY2FzdDxXS1VJbnQ2NFJl
Zj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KGJvZHksIDEpKTsKKyAgICBXS1N0cmluZ1JlZiBjb250
ZW50cyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgoYm9k
eSwgMikpOworCisgICAgUXRCdWlsdGluQnVuZGxlUGFnZSogYnVuZGxlUGFnZSA9IGJ1bmRsZVBh
Z2VGb3JQYWdlUmVmKHBhZ2UpOworICAgIGlmICghYnVuZGxlUGFnZSkKKyAgICAgICAgcmV0dXJu
OworICAgIGJ1bmRsZVBhZ2UtPmRpZFJlY2VpdmVNZXNzYWdlVG9TY3JpcHRFbnZpcm9ubWVudChX
S1VJbnQ2NEdldFZhbHVlKGlkKSwgY29udGVudHMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVu
ZGxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZS5oCmlu
ZGV4IDY5N2QyNmJkYTRlOGZlMTI2YThhZDA1MjVkY2Y1ODEzNjBkMGYzYWMuLjZhYTVmNzRkZjc2
YTExNjQ3NTkwNjNhNTE2MDIxYjAwNTdhODcxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGUuaApAQCAtNjAsNiArNjAsMTIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGhhbmRsZU1lc3NhZ2VUb05hdmlnYXRvclF0T2JqZWN0KFdLVHlwZVJlZiBtZXNz
YWdlQm9keSk7CiAgICAgdm9pZCBoYW5kbGVTZXROYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQoV0tU
eXBlUmVmIG1lc3NhZ2VCb2R5KTsKIAorICAgIHZvaWQgaGFuZGxlUmVnaXN0ZXJTY3JpcHRFbnZp
cm9ubWVudChXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOworICAgIHZvaWQgaGFuZGxlVW5yZWdpc3Rl
clNjcmlwdEVudmlyb25tZW50KFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CisgICAgdm9pZCBoYW5k
bGVBZGRTb3VyY2VUb1NjcmlwdEVudmlyb25tZW50KFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7Cisg
ICAgdm9pZCBoYW5kbGVSZW1vdmVTb3VyY2VGcm9tU2NyaXB0RW52aXJvbm1lbnQoV0tUeXBlUmVm
IG1lc3NhZ2VCb2R5KTsKKyAgICB2b2lkIGhhbmRsZU1lc3NhZ2VUb1NjcmlwdEVudmlyb25tZW50
KFdLVHlwZVJlZiBtZXNzYWdlQm9keSk7CisKICAgICAvLyBGSVhNRTogQ2FuIHdlIHVzZSBIYXNo
TWFwIG9mIE93blB0cnM/IE9yIHNvbWV0aGluZyBlcXVpdmFsZW50PwogICAgIFZlY3RvcjxPd25Q
dHI8UXRCdWlsdGluQnVuZGxlUGFnZT4gPiBtX3BhZ2VzOwogICAgIFdLQnVuZGxlUmVmIG1fYnVu
ZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5C
dW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVu
ZGxlUGFnZS5jcHAKaW5kZXggMmM4OTU1NmIzZDAwMTA2NTMzMTMxNWZkMTg2NTM1MTZkMDBiNDEz
Mi4uZTViZmRjMjMyM2U3NmY1NWRlYmEzMTcwZDFjYjcwNDdkMmJkOGE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9RdEJ1aWx0aW5CdW5kbGVQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZVBhZ2UuY3BwCkBA
IC0zMCwxMiArMzAsMTYgQEAKICNpbmNsdWRlICJRdEJ1aWx0aW5CdW5kbGUuaCIKICNpbmNsdWRl
ICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVGcmFtZS5oIgorI2luY2x1ZGUgIldLQnVu
ZGxlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5Q
dHIuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLU3RyaW5nUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Lmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDxRRmlsZT4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTA4
LDEwICsxMTIsMTkgQEAgc3RhdGljIEpTVmFsdWVSZWYgcXRfcG9zdE1lc3NhZ2VDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2IKIAogdm9pZCBRdEJ1aWx0aW5C
dW5kbGVQYWdlOjpkaWRDbGVhcldpbmRvd0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFdLQnVuZGxlU2NyaXB0V29ybGRSZWYgd29ybGQpCiB7Ci0gICAgaWYgKCFXS0J1bmRsZUZyYW1l
SXNNYWluRnJhbWUoZnJhbWUpIHx8IFdLQnVuZGxlU2NyaXB0V29ybGROb3JtYWxXb3JsZCgpICE9
IHdvcmxkKQorICAgIGlmICghV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFt
ZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29ybGQoZnJhbWUsIHdvcmxkKTsKLSAgICByZWdpc3Rl
ck5hdmlnYXRvclF0T2JqZWN0KGNvbnRleHQpOworCisgICAgaWYgKFdLQnVuZGxlU2NyaXB0V29y
bGROb3JtYWxXb3JsZCgpID09IHdvcmxkKSB7CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29ybGQoZnJhbWUs
IHdvcmxkKTsKKyAgICAgICAgcmVnaXN0ZXJOYXZpZ2F0b3JRdE9iamVjdChjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNjcmlwdEVudmlyb25tZW50KiBzY3JpcHRFbnZp
cm9ubWVudCA9IG1fd29ybGRUb1NjcmlwdEVudmlyb25tZW50LmdldCh3b3JsZCk7CisgICAgaWYg
KCFzY3JpcHRFbnZpcm9ubWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIHNjcmlwdEVudmlyb25t
ZW50LT5yZXNldE5hdmlnYXRvckRvdFF0KGZyYW1lKTsKIH0KIAogdm9pZCBRdEJ1aWx0aW5CdW5k
bGVQYWdlOjpwb3N0TWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChXS1N0cmluZ1JlZiBjb250
ZW50cykKQEAgLTE2Miw2ICsxNzUsNTYgQEAgdm9pZCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpzZXRO
YXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fbmF2aWdhdG9yUXRP
YmplY3RFbmFibGVkID0gZW5hYmxlZDsKIH0KIAordm9pZCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpy
ZWdpc3RlclNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90IGlkKQoreworICAgIEFTU0VSVCghbV9z
Y3JpcHRFbnZpcm9ubWVudHMuY29udGFpbnMoaWQpKTsKKyAgICBTY3JpcHRFbnZpcm9ubWVudCog
c2NyaXB0RW52aXJvbm1lbnQgPSBuZXcgU2NyaXB0RW52aXJvbm1lbnQodGhpcywgaWQpOworICAg
IG1fc2NyaXB0RW52aXJvbm1lbnRzLmFkZChpZCwgYWRvcHRQdHIoc2NyaXB0RW52aXJvbm1lbnQp
KTsKKworICAgIC8vIEZJWE1FOiBNb3ZlIGNvZGUgdG8ga2VlcCB0aGlzIG1hcCBpbnNpZGUgU2Ny
aXB0RW52aXJvbm1lbnQ/CisgICAgbV93b3JsZFRvU2NyaXB0RW52aXJvbm1lbnQuYWRkKHNjcmlw
dEVudmlyb25tZW50LT53b3JsZCgpLCBzY3JpcHRFbnZpcm9ubWVudCk7Cit9CisKK3ZvaWQgUXRC
dWlsdGluQnVuZGxlUGFnZTo6dW5yZWdpc3RlclNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90IGlk
KQoreworICAgIEFTU0VSVChtX3NjcmlwdEVudmlyb25tZW50cy5jb250YWlucyhpZCkpOworICAg
IFNjcmlwdEVudmlyb25tZW50KiBzY3JpcHRFbnZpcm9ubWVudCA9IG1fc2NyaXB0RW52aXJvbm1l
bnRzLmdldChpZCk7CisgICAgQVNTRVJUKG1fd29ybGRUb1NjcmlwdEVudmlyb25tZW50LmNvbnRh
aW5zKHNjcmlwdEVudmlyb25tZW50LT53b3JsZCgpKSk7CisgICAgbV93b3JsZFRvU2NyaXB0RW52
aXJvbm1lbnQucmVtb3ZlKHNjcmlwdEVudmlyb25tZW50LT53b3JsZCgpKTsKKyAgICBtX3Njcmlw
dEVudmlyb25tZW50cy5yZW1vdmUoaWQpOworfQorCit2b2lkIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6
OmFkZFNvdXJjZVRvU2NyaXB0RW52aXJvbm1lbnQodWludDY0X3QgaWQsIFdLU3RyaW5nUmVmIHNv
dXJjZSkKK3sKKyAgICBBU1NFUlQobV9zY3JpcHRFbnZpcm9ubWVudHMuY29udGFpbnMoaWQpKTsK
KyAgICBTY3JpcHRFbnZpcm9ubWVudCogc2NyaXB0RW52aXJvbm1lbnQgPSBtX3NjcmlwdEVudmly
b25tZW50cy5nZXQoaWQpOworICAgIHNjcmlwdEVudmlyb25tZW50LT5hZGRTb3VyY2UobV9idW5k
bGUtPnRvUmVmKCksIHNvdXJjZSk7Cit9CisKK3ZvaWQgUXRCdWlsdGluQnVuZGxlUGFnZTo6cmVt
b3ZlU291cmNlRnJvbVNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90IGlkLCBXS1N0cmluZ1JlZiBz
b3VyY2UpCit7CisgICAgQVNTRVJUKG1fc2NyaXB0RW52aXJvbm1lbnRzLmNvbnRhaW5zKGlkKSk7
CisgICAgU2NyaXB0RW52aXJvbm1lbnQqIHNjcmlwdEVudmlyb25tZW50ID0gbV9zY3JpcHRFbnZp
cm9ubWVudHMuZ2V0KGlkKTsKKyAgICBzY3JpcHRFbnZpcm9ubWVudC0+cmVtb3ZlU291cmNlKG1f
YnVuZGxlLT50b1JlZigpLCBzb3VyY2UpOworfQorCit2b2lkIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6
OmRpZFJlY2VpdmVNZXNzYWdlVG9TY3JpcHRFbnZpcm9ubWVudCh1aW50NjRfdCBpZCwgV0tTdHJp
bmdSZWYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9zY3JpcHRFbnZpcm9ubWVudHMuY29udGFp
bnMoaWQpKTsKKyAgICBTY3JpcHRFbnZpcm9ubWVudCogc2NyaXB0RW52aXJvbm1lbnQgPSBtX3Nj
cmlwdEVudmlyb25tZW50cy5nZXQoaWQpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSgpKTsKKyAgICBzY3JpcHRFbnZpcm9ubWVudC0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoZnJhbWUsIG1lc3NhZ2UpOworfQorCit2b2lkIFF0QnVpbHRpbkJ1
bmRsZVBhZ2U6OnBvc3RNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25tZW50KHVpbnQ2NF90IGlkLCBX
S1N0cmluZ1JlZiBjb250ZW50cykKK3sKKyAgICBzdGF0aWMgV0tTdHJpbmdSZWYgbWVzc2FnZU5h
bWUgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTWVzc2FnZUZyb21TY3JpcHRFbnZp
cm9ubWVudCIpOworICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBpZFJlZihBZG9wdFdLLCBX
S1VJbnQ2NENyZWF0ZShpZCkpOworICAgIFdLVHlwZVJlZiBib2R5W10gPSB7IHBhZ2UoKSwgaWRS
ZWYuZ2V0KCksIGNvbnRlbnRzIH07CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gbWVzc2Fn
ZUJvZHkoQWRvcHRXSywgV0tBcnJheUNyZWF0ZShib2R5LCBzaXplb2YoYm9keSkgLyBzaXplb2Yo
V0tUeXBlUmVmKSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UobV9idW5kbGUtPnRvUmVmKCks
IG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKIHZvaWQgUXRCdWlsdGluQnVu
ZGxlUGFnZTo6cmVnaXN0ZXJOYXZpZ2F0b3JRdE9iamVjdChKU0dsb2JhbENvbnRleHRSZWYgY29u
dGV4dCkKIHsKICAgICBzdGF0aWMgSlNTdHJpbmdSZWYgcG9zdE1lc3NhZ2VOYW1lID0gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInBvc3RNZXNzYWdlIik7CkBAIC0xNzAsNyArMjMzLDcg
QEAgdm9pZCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpyZWdpc3Rlck5hdmlnYXRvclF0T2JqZWN0KEpT
R2xvYmFsQ29udGV4dFJlZiBjb250ZXh0KQogCiAgICAgaWYgKG1fbmF2aWdhdG9yUXRPYmplY3Qp
CiAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoY29udGV4dCwgbV9uYXZpZ2F0b3JRdE9iamVjdCk7
Ci0gICAgbV9uYXZpZ2F0b3JRdE9iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBuYXZpZ2F0
b3JRdE9iamVjdENsYXNzKCksIHRoaXMpOworICAgIG1fbmF2aWdhdG9yUXRPYmplY3QgPSBKU09i
amVjdE1ha2UoY29udGV4dCwgbmF2aWdhdG9yRG90UXRKU0NsYXNzKCksIHRoaXMpOwogICAgIEpT
VmFsdWVQcm90ZWN0KGNvbnRleHQsIG1fbmF2aWdhdG9yUXRPYmplY3QpOwogCiAgICAgSlNPYmpl
Y3RSZWYgcG9zdE1lc3NhZ2UgPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250
ZXh0LCBwb3N0TWVzc2FnZU5hbWUsIHF0X3Bvc3RNZXNzYWdlQ2FsbGJhY2spOwpAQCAtMTgzLDcg
KzI0Niw3IEBAIHZvaWQgUXRCdWlsdGluQnVuZGxlUGFnZTo6cmVnaXN0ZXJOYXZpZ2F0b3JRdE9i
amVjdChKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCkKICAgICBKU09iamVjdFNldFByb3BlcnR5
KGNvbnRleHQsIG5hdmlnYXRvck9iamVjdCwgcXROYW1lLCBtX25hdmlnYXRvclF0T2JqZWN0LCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5LCAwKTsKIH0KIAotSlNDbGFzc1JlZiBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpuYXZpZ2F0b3JR
dE9iamVjdENsYXNzKCkKK0pTQ2xhc3NSZWYgUXRCdWlsdGluQnVuZGxlUGFnZTo6bmF2aWdhdG9y
RG90UXRKU0NsYXNzKCkKIHsKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBjbGFzc1JlZiA9IDA7CiAg
ICAgaWYgKCFjbGFzc1JlZikgewpAQCAtMTkzLDQgKzI1NiwxMDYgQEAgSlNDbGFzc1JlZiBRdEJ1
aWx0aW5CdW5kbGVQYWdlOjpuYXZpZ2F0b3JRdE9iamVjdENsYXNzKCkKICAgICByZXR1cm4gY2xh
c3NSZWY7CiB9CiAKK1F0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlwdEVudmlyb25tZW50OjpTY3Jp
cHRFbnZpcm9ubWVudChRdEJ1aWx0aW5CdW5kbGVQYWdlKiBidW5kbGVQYWdlLCB1aW50NjRfdCBp
ZCkKKyAgICA6IG1fYnVuZGxlUGFnZShidW5kbGVQYWdlKQorICAgICwgbV9pZChpZCkKKyAgICAs
IG1fd29ybGQoQWRvcHRXSywgV0tCdW5kbGVTY3JpcHRXb3JsZENyZWF0ZVdvcmxkKCkpCisgICAg
LCBtX25hdmlnYXRvckRvdFF0KDApCit7Cit9CisKK1F0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlw
dEVudmlyb25tZW50Ojp+U2NyaXB0RW52aXJvbm1lbnQoKQoreworICAgIGlmIChtX25hdmlnYXRv
ckRvdFF0KSB7CisgICAgICAgIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUgPSBXS0J1bmRsZVBhZ2VH
ZXRNYWluRnJhbWUobV9idW5kbGVQYWdlLT5wYWdlKCkpOworICAgICAgICBKU0dsb2JhbENvbnRl
eHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dEZvcldvcmxk
KGZyYW1lLCBtX3dvcmxkLmdldCgpKTsKKyAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChjb250ZXh0
LCBtX25hdmlnYXRvckRvdFF0KTsKKyAgICB9CisKKyAgICBXS0J1bmRsZVJlbW92ZVVzZXJTY3Jp
cHRzKG1fYnVuZGxlUGFnZS0+bV9idW5kbGUtPnRvUmVmKCksIG1fYnVuZGxlUGFnZS0+cGFnZUdy
b3VwKCksIG1fd29ybGQuZ2V0KCkpOworfQorCit2b2lkIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNj
cmlwdEVudmlyb25tZW50OjpyZXNldE5hdmlnYXRvckRvdFF0KFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUpCit7CisgICAgc3RhdGljIEpTU3RyaW5nUmVmIHBvc3RNZXNzYWdlTmFtZSA9IEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwb3N0TWVzc2FnZSIpOworICAgIHN0YXRpYyBKU1N0cmlu
Z1JlZiBuYXZpZ2F0b3JOYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIm5hdmln
YXRvciIpOworICAgIHN0YXRpYyBKU1N0cmluZ1JlZiBxdE5hbWUgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygicXQiKTsKKworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5k
bGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29ybGQoZnJhbWUsIG1fd29ybGQuZ2V0KCkp
OworCisgICAgaWYgKG1fbmF2aWdhdG9yRG90UXQpCisgICAgICAgIEpTVmFsdWVVbnByb3RlY3Qo
Y29udGV4dCwgbV9uYXZpZ2F0b3JEb3RRdCk7CisgICAgbV9uYXZpZ2F0b3JEb3RRdCA9IEpTT2Jq
ZWN0TWFrZShjb250ZXh0LCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpuYXZpZ2F0b3JEb3RRdEpTQ2xh
c3MoKSwgdGhpcyk7CisgICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgbV9uYXZpZ2F0b3JEb3RR
dCk7CisKKyAgICBKU09iamVjdFJlZiBwb3N0TWVzc2FnZSA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9u
V2l0aENhbGxiYWNrKGNvbnRleHQsIHBvc3RNZXNzYWdlTmFtZSwgbmF2aWdhdG9yRG90UXRQb3N0
TWVzc2FnZUNhbGxiYWNrKTsKKyAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIG1fbmF2
aWdhdG9yRG90UXQsIHBvc3RNZXNzYWdlTmFtZSwgcG9zdE1lc3NhZ2UsIGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHksIDApOworCisg
ICAgSlNWYWx1ZVJlZiBuYXZpZ2F0b3JWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4
dCwgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpLCBuYXZpZ2F0b3JOYW1lLCAwKTsK
KyAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBuYXZpZ2F0b3JWYWx1ZSkpCisgICAg
ICAgIHJldHVybjsKKyAgICBKU09iamVjdFJlZiBuYXZpZ2F0b3JPYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoY29udGV4dCwgbmF2aWdhdG9yVmFsdWUsIDApOworICAgIEpTT2JqZWN0U2V0UHJvcGVy
dHkoY29udGV4dCwgbmF2aWdhdG9yT2JqZWN0LCBxdE5hbWUsIG1fbmF2aWdhdG9yRG90UXQsIGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHksIDApOworfQorCit2b2lkIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlwdEVudmlyb25tZW50
OjphZGRTb3VyY2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZiBzb3VyY2UpCit7Cisg
ICAgUVN0cmluZyBxU291cmNlID0gV0tTdHJpbmdDb3B5UVN0cmluZyhzb3VyY2UpOworICAgIFFG
aWxlIHNvdXJjZUZpbGUocVNvdXJjZSk7CisgICAgaWYgKCFzb3VyY2VGaWxlLm9wZW4oUUlPRGV2
aWNlOjpSZWFkT25seSB8IFFJT0RldmljZTo6VGV4dCkpIHsKKyAgICAgICAgcVdhcm5pbmcoIlFX
ZWJTY3JpcHRFbnZpcm9ubWVudDogQ291bGRuJ3Qgb3BlbiAnJXMnIGFzIHNvdXJjZSBkdWUgdG8g
ZXJyb3IgJyVzJyIsIHFQcmludGFibGUocVNvdXJjZSksIHFQcmludGFibGUoc291cmNlRmlsZS5l
cnJvclN0cmluZygpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRU3RyaW5nIHFD
b250ZW50cyA9IFFTdHJpbmc6OmZyb21VdGY4KHNvdXJjZUZpbGUucmVhZEFsbCgpKTsKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY29udGVudHMgPSBXS1N0cmluZ0NyZWF0ZVdpdGhRU3Ry
aW5nKHFDb250ZW50cyk7CisKKyAgICAvLyBGSVhNRTogRGVmaW5lIFVSTCBzbyB3ZSBjYW4gcmVt
b3ZlIGJ5IHNvdXJjZS4KKyAgICBXS0J1bmRsZUFkZFVzZXJTY3JpcHQoYnVuZGxlLCBtX2J1bmRs
ZVBhZ2UtPnBhZ2VHcm91cCgpLCBtX3dvcmxkLmdldCgpLCBjb250ZW50cy5nZXQoKSwgMCwgMCwg
MCwga1dLSW5qZWN0QXREb2N1bWVudEVuZCwga1dLSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworfQor
Cit2b2lkIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlwdEVudmlyb25tZW50OjpyZW1vdmVTb3Vy
Y2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1N0cmluZ1JlZikKK3sKKyAgICAvLyBGSVhNRTogUmVt
b3ZlIGJ5IHNvdXJjZSwgc28gd2Ugc3VwcG9ydCBtdWx0aXBsZSBzb3VyY2VzLgorICAgIFdLQnVu
ZGxlUmVtb3ZlVXNlclNjcmlwdHMoYnVuZGxlLCBtX2J1bmRsZVBhZ2UtPnBhZ2VHcm91cCgpLCBt
X3dvcmxkLmdldCgpKTsKK30KKwordm9pZCBRdEJ1aWx0aW5CdW5kbGVQYWdlOjpTY3JpcHRFbnZp
cm9ubWVudDo6cG9zdE1lc3NhZ2VGcm9tU2NyaXB0RW52aXJvbm1lbnQoV0tTdHJpbmdSZWYgbWVz
c2FnZSkKK3sKKyAgICBtX2J1bmRsZVBhZ2UtPnBvc3RNZXNzYWdlRnJvbVNjcmlwdEVudmlyb25t
ZW50KG1faWQsIG1lc3NhZ2UpOworfQorCitKU1ZhbHVlUmVmIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6
OlNjcmlwdEVudmlyb25tZW50OjpuYXZpZ2F0b3JEb3RRdFBvc3RNZXNzYWdlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiopCit7CisgICAgLy8gRklYTUU6IHNob3VsZCB0aGlzIHdvcmsgcmVnYXJkbGVzcyBvZiB0
aGUgdGhpc09iamVjdD8KKworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSB8fCAhSlNWYWx1ZUlz
U3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlwdEVu
dmlyb25tZW50KiBzY3JpcHRFbnZpcm9ubWVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UXRCdWlsdGlu
QnVuZGxlUGFnZTo6U2NyaXB0RW52aXJvbm1lbnQqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgIEFTU0VSVChzY3JpcHRFbnZpcm9ubWVudCk7CisKKyAgICBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4ganNDb250ZW50cyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwg
YXJndW1lbnRzWzBdLCAwKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY29udGVudHMo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoanNDb250ZW50cy5nZXQoKSkpOwor
ICAgIHNjcmlwdEVudmlyb25tZW50LT5wb3N0TWVzc2FnZUZyb21TY3JpcHRFbnZpcm9ubWVudChj
b250ZW50cy5nZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQp
OworfQorCit2b2lkIFF0QnVpbHRpbkJ1bmRsZVBhZ2U6OlNjcmlwdEVudmlyb25tZW50OjpkaWRS
ZWNlaXZlTWVzc2FnZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1N0cmluZ1JlZiBjb250ZW50
cykKK3sKKyAgICBzdGF0aWMgSlNTdHJpbmdSZWYgb25tZXNzYWdlTmFtZSA9IEpTU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJvbm1lc3NhZ2UiKTsKKworICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0Rm9yV29ybGQoZnJh
bWUsIG1fd29ybGQuZ2V0KCkpOworICAgIEpTVmFsdWVSZWYgb25tZXNzYWdlVmFsdWUgPSBKU09i
amVjdEdldFByb3BlcnR5KGNvbnRleHQsIG1fbmF2aWdhdG9yRG90UXQsIG9ubWVzc2FnZU5hbWUs
IDApOworICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIG9ubWVzc2FnZVZhbHVlKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgSlNPYmplY3RSZWYgb25tZXNzYWdlRnVuY3Rpb24gPSBK
U1ZhbHVlVG9PYmplY3QoY29udGV4dCwgb25tZXNzYWdlVmFsdWUsIDApOworICAgIGlmICghSlNP
YmplY3RJc0Z1bmN0aW9uKGNvbnRleHQsIG9ubWVzc2FnZUZ1bmN0aW9uKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgSlNPYmplY3RSZWYgd3JhcHBlZE1lc3NhZ2UgPSBjcmVhdGVXcmFwcGVkTWVz
c2FnZShjb250ZXh0LCBjb250ZW50cyk7CisgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250
ZXh0LCBvbm1lc3NhZ2VGdW5jdGlvbiwgMCwgMSwgJndyYXBwZWRNZXNzYWdlLCAwKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3F0L1F0QnVpbHRpbkJ1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
cXQvUXRCdWlsdGluQnVuZGxlUGFnZS5oCmluZGV4IDNmZmIzZjAwODkzM2RjZGY4NGIxZjRiYmU2
Mjg1YTEwZDJlMWNhOWYuLmVmNzI4ZGEwOTcyZTA3MzI3NTk3ZjU1MDczM2VlMGQ2NTBkZGMzZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxl
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvUXRCdWlsdGluQnVuZGxl
UGFnZS5oCkBAIC0zMCw2ICszMCw5IEBACiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKICNpbmNs
dWRlICJXS0J1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJXS0J1bmRsZVNjcmlwdFdvcmxkLmgiCisj
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQxLDYgKzQ0LDcg
QEAgcHVibGljOgogICAgIH5RdEJ1aWx0aW5CdW5kbGVQYWdlKCk7CiAKICAgICBXS0J1bmRsZVBh
Z2VSZWYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdLQnVuZGxlUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIFdLQnVuZGxlUGFnZUdldFBhZ2VHcm91
cChtX3BhZ2UpOyB9CiAKICAgICAvLyBMb2FkZXIgQ2xpZW50LgogICAgIHN0YXRpYyB2b2lkIGRp
ZENsZWFyV2luZG93Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBX
S0J1bmRsZVNjcmlwdFdvcmxkUmVmLCBjb25zdCB2b2lkKik7CkBAIC01MywxMCArNTcsNDkgQEAg
cHVibGljOgogICAgIGJvb2wgbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQ7IH0KICAgICB2b2lkIHNldE5hdmlnYXRvclF0
T2JqZWN0RW5hYmxlZChib29sKTsKIAorICAgIHZvaWQgcmVnaXN0ZXJTY3JpcHRFbnZpcm9ubWVu
dCh1aW50NjRfdCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2NyaXB0RW52aXJvbm1lbnQodWludDY0
X3QpOworICAgIHZvaWQgYWRkU291cmNlVG9TY3JpcHRFbnZpcm9ubWVudCh1aW50NjRfdCwgV0tT
dHJpbmdSZWYpOworICAgIHZvaWQgcmVtb3ZlU291cmNlRnJvbVNjcmlwdEVudmlyb25tZW50KHVp
bnQ2NF90LCBXS1N0cmluZ1JlZik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlVG9TY3Jp
cHRFbnZpcm9ubWVudCh1aW50NjRfdCwgV0tTdHJpbmdSZWYpOworICAgIHZvaWQgcG9zdE1lc3Nh
Z2VGcm9tU2NyaXB0RW52aXJvbm1lbnQodWludDY0X3QsIFdLU3RyaW5nUmVmKTsKKwogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgU2NyaXB0RW52aXJvbm1lbnQ7CisKKyAgICBjbGFzcyBTY3Jp
cHRFbnZpcm9ubWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTY3JpcHRFbnZpcm9ubWVudChR
dEJ1aWx0aW5CdW5kbGVQYWdlKiwgdWludDY0X3QpOworICAgICAgICB+U2NyaXB0RW52aXJvbm1l
bnQoKTsKKworICAgICAgICBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkKCkgeyByZXR1cm4g
bV93b3JsZC5nZXQoKTsgfQorICAgICAgICB2b2lkIHJlc2V0TmF2aWdhdG9yRG90UXQoV0tCdW5k
bGVGcmFtZVJlZik7CisKKyAgICAgICAgdm9pZCBhZGRTb3VyY2UoV0tCdW5kbGVSZWYsIFdLU3Ry
aW5nUmVmIHNvdXJjZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlU291cmNlKFdLQnVuZGxlUmVmLCBX
S1N0cmluZ1JlZiBzb3VyY2UpOworCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoV0tC
dW5kbGVGcmFtZVJlZiwgV0tTdHJpbmdSZWYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9p
ZCBwb3N0TWVzc2FnZUZyb21TY3JpcHRFbnZpcm9ubWVudChXS1N0cmluZ1JlZik7CisgICAgICAg
IHN0YXRpYyBKU1ZhbHVlUmVmIG5hdmlnYXRvckRvdFF0UG9zdE1lc3NhZ2VDYWxsYmFjayhKU0Nv
bnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiopOwor
CisgICAgICAgIFF0QnVpbHRpbkJ1bmRsZVBhZ2UqIG1fYnVuZGxlUGFnZTsKKyAgICAgICAgdWlu
dDY0X3QgbV9pZDsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVTY3JpcHRXb3JsZFJlZj4g
bV93b3JsZDsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1fc291cmNlOworICAg
ICAgICBKU09iamVjdFJlZiBtX25hdmlnYXRvckRvdFF0OworICAgIH07CisKKyAgICBTY3JpcHRF
bnZpcm9ubWVudCogd2ViU2NyaXB0Rm9ySWQodWludDY0X3QpOworICAgIFNjcmlwdEVudmlyb25t
ZW50KiB3ZWJTY3JpcHRGb3JXb3JsZChXS0J1bmRsZVNjcmlwdFdvcmxkUmVmKTsKKworICAgIHN0
YXRpYyBKU0NsYXNzUmVmIG5hdmlnYXRvckRvdFF0SlNDbGFzcygpOwogICAgIHZvaWQgcmVnaXN0
ZXJOYXZpZ2F0b3JRdE9iamVjdChKU0dsb2JhbENvbnRleHRSZWYpOwogCi0gICAgc3RhdGljIEpT
Q2xhc3NSZWYgbmF2aWdhdG9yUXRPYmplY3RDbGFzcygpOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IE93blB0cjxTY3JpcHRFbnZpcm9ubWVudD4gPiBtX3NjcmlwdEVudmlyb25tZW50czsKKyAgICBI
YXNoTWFwPFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIFNjcmlwdEVudmlyb25tZW50Kj4gbV93b3Js
ZFRvU2NyaXB0RW52aXJvbm1lbnQ7CiAKICAgICBRdEJ1aWx0aW5CdW5kbGUqIG1fYnVuZGxlOwog
ICAgIFdLQnVuZGxlUGFnZVJlZiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvcXR3ZWJraXQt
ZXhwb3J0Lm1hcCBiL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCmluZGV4IDQ5NThjODUxM2Rk
NTYxYjg0NmM0MzEyYmIwMmMwMjVlN2ZhMTVjNTQuLmMyMDcwNzJiY2U2Y2Q4NmYwYjU1N2VmMDdm
OTlhMmM2NzRmZWE1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCisr
KyBiL1NvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwCkBAIC0xNDgsNiArMTQ4LDkgQEAgcXdrXzEu
MCB7CiAgICAgICAgICpRV2ViTmF2aWdhdGlvblJlcXVlc3Q7CiAgICAgICAgIG5vbi12aXJ0dWFs
P3RodW5rP3RvP1FXZWJOYXZpZ2F0aW9uUmVxdWVzdCo7CiAgICAgICAgIFFXZWJOYXZpZ2F0aW9u
UmVxdWVzdDo6KjsKKyAgICAgICAgKlFXZWJTY3JpcHRFbnZpcm9ubWVudDsKKyAgICAgICAgbm9u
LXZpcnR1YWw/dGh1bms/dG8/UVdlYlNjcmlwdEVudmlyb25tZW50KjsKKyAgICAgICAgUVdlYlNj
cmlwdEVudmlyb25tZW50OjoqOwogCiAKICAgICAgICAgIyBXZWJLaXQgMiBDIEFQSSBtYW5nbGVk
IGluIEMrKwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDBhNmJiZjg2
OWY1ZTc4YjAxNWQ2NzI0MDU5ZWYzODkxZDdhZTY2NmMuLjViY2IzODgzMDkxMGM1OTUyYjVjNzA3
NDA4NDI2ZDZlZDU1ODUzNzcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMi0yMiAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZp
bGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF0gW1dLMl0g
UHJvdmlkZSBhIHdheSB0byBjcmVhdGUgYW5kIGNvbW11bmljYXRlIHRvIGlzb2xhdGVkIEpTIGVu
dmlyb25tZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzUwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNvdXJjZS9xdHdlYmtpdC1leHBvcnQubWFwOiBBZGRlZCBRV2ViU2NyaXB0RW52aXJvbm1l
bnQuCisKIDIwMTEtMTItMjIgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBFbmFibGUgYmxvYiBmb3IgdGhlIEJsYWNrQmVycnkg
cG9ydGluZwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>