<?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>233101</bug_id>
          
          <creation_ts>2021-11-14 11:17:45 -0800</creation_ts>
          <short_desc>Web Inspector: add ExtensionTabActivation diagnostic event</short_desc>
          <delta_ts>2021-11-30 14:58:36 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814874</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-11-14 11:17:45 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814875</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-11-14 11:20:38 -0800</bug_when>
    <thetext>&lt;rdar://85264921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814928</commentid>
    <comment_count>2</comment_count>
      <attachid>444201</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-11-14 17:47:52 -0800</bug_when>
    <thetext>Created attachment 444201
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815188</commentid>
    <comment_count>3</comment_count>
      <attachid>444201</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-15 13:00:13 -0800</bug_when>
    <thetext>Comment on attachment 444201
Patch v1.0

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

r=me, nice work :)

&gt; Source/WebInspectorUI/UserInterface/Controllers/ExtensionTabActivationDiagnosticEventRecorder.js:56
&gt; +        console.assert(extension, &quot;Extension tab should have an associated extension.&quot;);

NIT: I&apos;d go even further and check `extension instanceof `WI.WebInspectorExtension`

&gt; Source/WebInspectorUI/UserInterface/Controllers/ExtensionTabActivationDiagnosticEventRecorder.js:67
&gt; +        let extensionBundleIdentifier = extension.extensionBundleIdentifier;
&gt; +        let extensionTabName = selectedTab.tabInfo().displayName;
&gt; +        let activeExtensionTabCount = WI.sharedApp.extensionController.activeExtensionTabContentViews().length;
&gt; +        this.logDiagnosticEvent(this.name, {extensionBundleIdentifier, extensionTabName, activeExtensionTabCount});

NIT: I&apos;d inline these instead of creating new variables that&apos;re only used once
```
        this.logDiagnosticEvent(this.name, {
            extensionBundleIdentifier: extension.extensionBundleIdentifier,
            extensionTabName: selectedTab.tabInfo().displayName,
            activeExtensionTabCount: WI.sharedApp.extensionController.activeExtensionTabContentViews().length,
        });
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:237
&gt; +        return [...this._extensionTabContentViewForExtensionTabIDMap.values()].filter((tab) =&gt; tab.visible || !!tab.tabBarItem.parentTabBar);

I think we prefer `Array.from(this._extensionTabContentViewForExtensionTabIDMap.values())`

NIT: the `!!` is unnecessary since you&apos;re only checking for falsy and not saving the result value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818963</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-11-30 14:58:36 -0800</bug_when>
    <thetext>Committed r286329 (244688@main): &lt;https://commits.webkit.org/244688@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444201</attachid>
            <date>2021-11-14 17:47:52 -0800</date>
            <delta_ts>2021-11-15 13:00:13 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-233101-20211114174751.patch</filename>
            <type>text/plain</type>
            <size>40161</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1Nzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
ZDM3MWNkMjRlNDU1MjQwZmI0MWIxN2RiMGYyNTBkNjMzNDI3NjY1Li40ODJlMDhkY2RmNDIwMDhi
MTA3NDQ5YjA5MzhkMTljM2VjN2U1NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAyMS0xMS0xNCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFnbm9zdGlj
IGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzMxMDEKKyAgICAgICAgPHJkYXI6Ly84NTI2NDkyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IGRpYWdub3N0aWMgZXZlbnQgdGhhdCBy
ZXBvcnRzIHRoZSBmaXJzdCBhY3RpdmF0aW9uIG9mCisgICAgICAgIGFuIGV4dGVuc2lvbiB0YWIu
IEFsc28gcmVwb3J0IHRoZSBudW1iZXIgb2YgYWN0aXZlIGV4dGVuc2lvbiB0YWJzLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9FeHRlbnNpb25UYWJBY3RpdmF0aW9uRGlh
Z25vc3RpY0V2ZW50UmVjb3JkZXIuanM6IEFkZGVkLgorICAgICAgICAoV0kuRXh0ZW5zaW9uVGFi
QWN0aXZhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyKToKKyAgICAgICAgKFdJLkV4dGVuc2lv
blRhYkFjdGl2YXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5wcm90b3R5cGUuc2V0dXApOgor
ICAgICAgICAoV0kuRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVy
LnByb3RvdHlwZS50ZWFyZG93bik6CisgICAgICAgIChXSS5FeHRlbnNpb25UYWJBY3RpdmF0aW9u
RGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIucHJvdG90eXBlLl9zZWxlY3RlZFRhYkNvbnRlbnRWaWV3
RGlkQ2hhbmdlKToKKyAgICAgICAgUmVwb3J0IG9ubHkgdGhlIGZpcnN0IGFjdGl2YXRpb24uIFRo
ZSBleHRlbnNpb24gdGFiIGlmcmFtZSBkb2VzIG5vdCBsb2FkIHVudGlsCisgICAgICAgIHRoZSBm
aXJzdCB0aW1lIHRoYXQgdGhlIHRhYiBpcyBzZWxlY3RlZCBhbmQgc2hvd24uCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLmNvbnRlbnRMb2FkZWQp
OiBBZGQgZGlhZ25vc3RpYyBldmVudCByZWNvcmRlciBpZiBleHRlbnNpb25zIGFyZSBzdXBwb3J0
ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25D
b250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIFBhc3MgYWxv
bmcgdGhlIG5ldyBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyIGFyZ3VtZW50IHRvIHRoZSBtb2Rl
bCBvYmplY3QuCisKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIu
cHJvdG90eXBlLmFjdGl2ZUV4dGVuc2lvblRhYkNvbnRlbnRWaWV3cyk6CisgICAgICAgIEFkZGVk
LiBUaGlzIGlzIGEgaGVscGVyIG1ldGhvZCBmb3IgY29sbGVjdGluZyBkaWFnbm9zdGljIGV2ZW50
IGRhdGEuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RlYnVnL0Jvb3RzdHJhcC5qczoKKyAg
ICAgICAgKHVwZGF0ZU1vY2tXZWJFeHRlbnNpb25UYWIpOgorICAgICAgICAoV0kucnVuQm9vdHN0
cmFwT3BlcmF0aW9ucyk6CisgICAgICAgIFBhc3MgbmV3IGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZp
ZXIgYXJndW1lbnQgZm9yIHRoZSBNb2NrIEV4dGVuc2lvbi4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5odG1sOiBBZGQgbmV3IGZpbGUuCisgICAgICAgICogVXNlckludGVyZmFjZS9N
b2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5wcm90b3R5cGUu
Z2V0IGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIpOgorICAgICAgICBTdG9yZSB0aGUgZXh0ZW5z
aW9uIGJ1bmRsZSBpZGVudGlmaWVyIG9uIHRoZSBtb2RlbCBvYmplY3QuIEFkZCBhIGdldHRlci4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEku
anM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5yZWdpc3RlckV4dGVuc2lvbik6Cisg
ICAgICAgIFBhc3MgbmV3IGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIgYXJndW1lbnQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uVGFiQ29udGVudFZp
ZXcucHJvdG90eXBlLmdldCBleHRlbnNpb24pOiBBZGRlZC4KKwogMjAyMS0xMS0xMiAgUmF6dmFu
IENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
RXh0cmFjdCByZXVzYWJsZSBsb2dpYyBmcm9tIFJlc291cmNlUXVlcnlDb250cm9sbGVyLCBSZXNv
dXJjZVF1ZXJ5UmVzdWx0IGFuZCBSZXNvdXJjZVF1ZXJ5TWF0Y2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWY2Nzc1
NzUwNDliZjE3ODA1OTQ4ODU2NjkwZGI2MmQxYjQwZWM2OC4uZTYxMjAzNTlhYWQ5YmQzMmJhNDdk
Nzk4ZDM1Y2NlYzUxNmY5NDU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0xMS0x
NCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
ZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFnbm9zdGljIGV2ZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMxMDEKKyAgICAgICAgPHJkYXI6
Ly84NTI2NDkyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgcGx1bWJpbmcgZm9yIG5ldyBhcmd1bWVudCAnZXh0ZW5zaW9uQnVuZGxlSWRlbnRp
ZmllcicgdGhhdCdzCisgICAgICAgIHBhc3NlZCB0byBXZWJJbnNwZWN0b3JVSSB3aGVuIHJlZ2lz
dGVyaW5nIGFuIGV4dGVuc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25X
aXRoSUQ6ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElE
OmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHJlZ2lz
dGVyRXh0ZW5zaW9uV2l0aElEOmV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXI6ZGlzcGxheU5hbWU6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW46CisKIDIwMjEtMTEtMTQgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXR0YWNoIElPSElERXZlbnQgdGlt
ZXN0YW1wcyB0byB3aGVlbCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwppbmRleCAyMGE1ZDg3N2RkY2U0NjU3YWNiYTdhOWY4YjFh
MGNhNWJiOWI2ODVkLi5lOWMyMDVhYTRjMTcxOGM3MTkxMzhhNGExNDZmZDA1YjkxYzQ1Njg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
CkBAIC01OTQsNiArNTk0LDkgQEAgV0kuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgICAgIFdJLmRpYWdub3N0aWNDb250cm9sbGVyLmFkZFJlY29yZGVyKG5ldyBXSS5HcmlkT3Zl
cmxheURpYWdub3N0aWNFdmVudFJlY29yZGVyKFdJLmRpYWdub3N0aWNDb250cm9sbGVyKSk7CiAg
ICAgICAgICAgICBXSS5kaWFnbm9zdGljQ29udHJvbGxlci5hZGRSZWNvcmRlcihuZXcgV0kuR3Jp
ZE92ZXJsYXlDb25maWd1cmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIoV0kuZGlhZ25vc3Rp
Y0NvbnRyb2xsZXIpKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc3VwcG9ydHNXZWJFeHRlbnNpb25zKQorICAgICAgICAgICAgV0kuZGlhZ25vc3RpY0Nv
bnRyb2xsZXIuYWRkUmVjb3JkZXIobmV3IFdJLkV4dGVuc2lvblRhYkFjdGl2YXRpb25EaWFnbm9z
dGljRXZlbnRSZWNvcmRlcihXSS5kaWFnbm9zdGljQ29udHJvbGxlcikpOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0V4dGVuc2lvblRhYkFjdGl2YXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0V4dGVuc2lvblRh
YkFjdGl2YXRpb25EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODEwZmVi
OTFlYzdkYjc5MTNiYmZmY2UxZWQwMmM3NzQ5ZjMyODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRXh0ZW5zaW9uVGFi
QWN0aXZhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXSS5FeHRlbnNpb25UYWJBY3RpdmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3Jk
ZXIgPSBjbGFzcyBFeHRlbnNpb25UYWJBY3RpdmF0aW9uRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIg
ZXh0ZW5kcyBXSS5EaWFnbm9zdGljRXZlbnRSZWNvcmRlcgoreworICAgIGNvbnN0cnVjdG9yKGNv
bnRyb2xsZXIpCisgICAgeworICAgICAgICBzdXBlcigiRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiIs
IGNvbnRyb2xsZXIpOworCisgICAgICAgIHRoaXMuX3JlcG9ydGVkRXh0ZW5zaW9uVGFiSURzID0g
bmV3IFNldDsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHNldHVwKCkKKyAgICB7
CisgICAgICAgIFdJLnRhYkJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYWJCcm93c2VyLkV2
ZW50LlNlbGVjdGVkVGFiQ29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX3NlbGVjdGVkVGFiQ29u
dGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOworICAgIH0KKworICAgIHRlYXJkb3duKCkKKyAgICB7
CisgICAgICAgIFdJLnRhYkJyb3dzZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5UYWJCcm93c2Vy
LkV2ZW50LlNlbGVjdGVkVGFiQ29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX3NlbGVjdGVkVGFi
Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKwor
ICAgIF9zZWxlY3RlZFRhYkNvbnRlbnRWaWV3RGlkQ2hhbmdlKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgbGV0IHNlbGVjdGVkVGFiID0gZXZlbnQuZGF0YS5pbmNvbWluZ1RhYjsKKyAgICAgICAgaWYg
KCEoc2VsZWN0ZWRUYWIgaW5zdGFuY2VvZiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25UYWJDb250
ZW50VmlldykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9
IHNlbGVjdGVkVGFiLmV4dGVuc2lvbjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXh0ZW5zaW9u
LCAiRXh0ZW5zaW9uIHRhYiBzaG91bGQgaGF2ZSBhbiBhc3NvY2lhdGVkIGV4dGVuc2lvbi4iKTsK
KworICAgICAgICAvLyBPbmx5IHJlcG9ydCB0aGUgZmlyc3Qgc2VsZWN0aW9uIG9mIGFuIGV4dGVu
c2lvbiB0YWIuCisgICAgICAgIGlmICh0aGlzLl9yZXBvcnRlZEV4dGVuc2lvblRhYklEcy5oYXMo
c2VsZWN0ZWRUYWIuZXh0ZW5zaW9uVGFiSUQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3JlcG9ydGVkRXh0ZW5zaW9uVGFiSURzLmFkZChzZWxlY3RlZFRhYi5leHRlbnNp
b25UYWJJRCk7CisKKyAgICAgICAgbGV0IGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIgPSBleHRl
bnNpb24uZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgbGV0IGV4dGVuc2lvblRh
Yk5hbWUgPSBzZWxlY3RlZFRhYi50YWJJbmZvKCkuZGlzcGxheU5hbWU7CisgICAgICAgIGxldCBh
Y3RpdmVFeHRlbnNpb25UYWJDb3VudCA9IFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVy
LmFjdGl2ZUV4dGVuc2lvblRhYkNvbnRlbnRWaWV3cygpLmxlbmd0aDsKKyAgICAgICAgdGhpcy5s
b2dEaWFnbm9zdGljRXZlbnQodGhpcy5uYW1lLCB7ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciwg
ZXh0ZW5zaW9uVGFiTmFtZSwgYWN0aXZlRXh0ZW5zaW9uVGFiQ291bnR9KTsKKyAgICB9Cit9Owor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlci5qcwppbmRleCA2ZWVmMDAxNjViNDg4OTg2ZDQyMTUzZDM1Y2ZmOGU3MDIxODM3MTc5
Li5jZTNmM2Q2NzY4YzJkOWVhYTQ5ZjNlNGRkMzc4YWFkMzc2NWE1ZTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMK
QEAgLTQ0LDE0ICs0NCwxNCBAQCBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0g
Y2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICByZXR1
cm4gbmV3IFNldCh0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25JRE1hcC5rZXlzKCkpOwogICAg
IH0KIAotICAgIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAg
ICByZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmll
ciwgZGlzcGxheU5hbWUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZXh0ZW5zaW9uRm9yRXh0
ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgewogICAgICAgICAgICAgV0kucmVwb3J0SW50
ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwgaXQncyBhbHJlYWR5IHJl
Z2lzdGVyZWQ6ICIgKyBleHRlbnNpb25JRCk7CiAgICAgICAgICAgICByZXR1cm4gV0kuV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5SZWdpc3RyYXRpb25GYWlsZWQ7CiAgICAgICAgIH0K
IAotICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3IFdJLldlYkluc3BlY3RvckV4dGVuc2lvbihl
eHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3IFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbihleHRlbnNpb25JRCwgZXh0ZW5zaW9uQnVuZGxlSWRlbnRp
ZmllciwgZGlzcGxheU5hbWUpOwogICAgICAgICB0aGlzLl9leHRlbnNpb25Gb3JFeHRlbnNpb25J
RE1hcC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVu
dC5FeHRlbnNpb25BZGRlZCwge2V4dGVuc2lvbn0pOwpAQCAtMjMyLDYgKzIzMiwxMSBAQCBXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlciBleHRlbgogICAgICAgICB9CiAgICAgfQogCisgICAgYWN0aXZlRXh0ZW5z
aW9uVGFiQ29udGVudFZpZXdzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbLi4udGhpcy5fZXh0
ZW5zaW9uVGFiQ29udGVudFZpZXdGb3JFeHRlbnNpb25UYWJJRE1hcC52YWx1ZXMoKV0uZmlsdGVy
KCh0YWIpID0+IHRhYi52aXNpYmxlIHx8ICEhdGFiLnRhYkJhckl0ZW0ucGFyZW50VGFiQmFyKTsK
KyAgICB9CisKICAgICBldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGV4dGVuc2lvblRhYklE
LCBzY3JpcHRTb3VyY2UpCiAgICAgewogICAgICAgICBsZXQgdGFiQ29udGVudFZpZXcgPSB0aGlz
Ll9leHRlbnNpb25UYWJDb250ZW50Vmlld0ZvckV4dGVuc2lvblRhYklETWFwLmdldChleHRlbnNp
b25UYWJJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EZWJ1Zy9Cb290c3RyYXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EZWJ1Zy9Cb290c3RyYXAuanMKaW5kZXggYWQzMTVhNDFiYWM2YjM2YTJlZDdiY2VjMDIzZjMz
YjdjYTAwNjQ2Ni4uM2E0ODgxNzM5OGY4NWUzZWYzMzJjNjZhZTgzMDgzNjQ5MDNkZGVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWcvQm9vdHN0
cmFwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RlYnVnL0Jv
b3RzdHJhcC5qcwpAQCAtMTQzLDYgKzE0Myw3IEBAIFdJLnJ1bkJvb3RzdHJhcE9wZXJhdGlvbnMg
PSBmdW5jdGlvbigpIHsKICAgICBmdW5jdGlvbiB1cGRhdGVNb2NrV2ViRXh0ZW5zaW9uVGFiKCkg
ewogICAgICAgICBsZXQgbW9ja0RhdGEgPSB7CiAgICAgICAgICAgICBleHRlbnNpb25JRDogIjEy
MzQ1Njc4OTBBQkNERUYiLAorICAgICAgICAgICAgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjog
Im9yZy53ZWJraXQuV2ViSW5zcGVjdG9yLk1vY2tFeHRlbnNpb24iLAogICAgICAgICAgICAgZGlz
cGxheU5hbWU6IFdJLnVubG9jYWxpemVkU3RyaW5nKCJNb2NrIEV4dGVuc2lvbiIpLAogICAgICAg
ICAgICAgdGFiTmFtZTogV0kudW5sb2NhbGl6ZWRTdHJpbmcoIk1vY2siKSwKICAgICAgICAgICAg
IHRhYkljb25VUkw6ICJJbWFnZXMvSW5mby5zdmciLApAQCAtMTU3LDcgKzE1OCw3IEBAIFdJLnJ1
bkJvb3RzdHJhcE9wZXJhdGlvbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGxldCBlcnJvciA9IEluc3BlY3RvckZyb250ZW5kQVBJLnJl
Z2lzdGVyRXh0ZW5zaW9uKG1vY2tEYXRhLmV4dGVuc2lvbklELCBtb2NrRGF0YS5kaXNwbGF5TmFt
ZSk7CisgICAgICAgIGxldCBlcnJvciA9IEluc3BlY3RvckZyb250ZW5kQVBJLnJlZ2lzdGVyRXh0
ZW5zaW9uKG1vY2tEYXRhLmV4dGVuc2lvbklELCBtb2NrRGF0YS5leHRlbnNpb25CdW5kbGVJZGVu
dGlmaWVyLCBtb2NrRGF0YS5kaXNwbGF5TmFtZSk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAg
ICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiUHJvYmxlbSBjcmVhdGluZyBtb2NrIHdl
YiBleHRlbnNpb246ICIgKyBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggNjY0ZWE4MWE2ZDky
MzE0NTc1NTQ3M2I2NmM4NGM0YzU1MmEzODFjZC4uOTg0YmRiZWU2YWEzYzM0OGUyYTQwZThjM2Y0
ZWZjMTkwZTUzOWFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbApAQCAtOTM1LDYgKzkzNSw3IEBACiAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvRGlhZ25vc3RpY0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9EaWFnbm9zdGljRXZlbnRSZWNvcmRlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0V4dGVuc2lvblRhYkFjdGl2YXRpb25EaWFnbm9zdGlj
RXZlbnRSZWNvcmRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0dyaWRPdmVybGF5Q29uZmlndXJhdGlvbkRpYWdub3N0aWNFdmVudFJlY29yZGVyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvR3JpZE92ZXJsYXlEaWFnbm9zdGlj
RXZlbnRSZWNvcmRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0luc3BlY3RlZFRhcmdldFR5cGVzRGlhZ25vc3RpY0V2ZW50UmVjb3JkZXIuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKaW5kZXggOGVhZmUwMzkyNGQ1
OTZhYmNkZGVhYmNjMWJlZWEyZWNhM2Q0MWJiYS4uN2E0NzRkYzRhZWNhZWI0ZWUyNGIwMDVjZWI0
Mjk3ZDA0MDE5MWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDE4ICsyNSwyMSBAQAogCiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBXZWJJbnNw
ZWN0b3JFeHRlbnNpb24KIHsKLSAgICBjb25zdHJ1Y3RvcihleHRlbnNpb25JRCwgZGlzcGxheU5h
bWUpCisgICAgY29uc3RydWN0b3IoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZp
ZXIsIGRpc3BsYXlOYW1lKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGV4
dGVuc2lvbklEID09PSAic3RyaW5nIiwgZXh0ZW5zaW9uSUQpOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0eXBlb2YgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciA9PT0gInN0cmluZyIsIGV4dGVu
c2lvbkJ1bmRsZUlkZW50aWZpZXIpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgZGlz
cGxheU5hbWUgPT09ICJzdHJpbmciLCBkaXNwbGF5TmFtZSk7CiAKICAgICAgICAgdGhpcy5fZXh0
ZW5zaW9uSUQgPSBleHRlbnNpb25JRDsKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uQnVuZGxlSWRl
bnRpZmllciA9IGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgICAgIHRoaXMuX2Rpc3Bs
YXlOYW1lID0gZGlzcGxheU5hbWU7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
ZXh0ZW5zaW9uSUQoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25JRDsgfQorICAgIGdldCBleHRl
bnNpb25CdW5kbGVJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uQnVuZGxlSWRl
bnRpZmllcjsgfQogICAgIGdldCBkaXNwbGF5TmFtZSgpIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXlO
YW1lOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4
IGE0NmUzOWMyYWY1ODExYjQ4MTVhZGUzZDEwNDdjMzNhMmE1NDY1YzcuLmI1Y2U1NGQ5MWFkMWJh
OGY5OTFhMjdjZGQzMGYxOTNiMzAxNDllMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZy
b250ZW5kQVBJLmpzCkBAIC0xOTksOSArMTk5LDkgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7
CiAgICAgfSwKIAogICAgIC8vIFJldHVybnMgYSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJy
b3JDb2RlIGlmIGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2Ugbm90aGluZy4KLSAgICByZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisgICAgcmVnaXN0ZXJFeHRl
bnNpb24oZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIsIGRpc3BsYXlOYW1l
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVy
LnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHJl
dHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5yZWdpc3RlckV4dGVuc2lvbihl
eHRlbnNpb25JRCwgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciwgZGlzcGxheU5hbWUpOwogICAg
IH0sCiAKICAgICAvLyBSZXR1cm5zIGEgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29k
ZSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3RoZXJ3aXNlIG5vdGhpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJJbnNwZWN0b3JFeHRl
bnNpb25UYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGJl
YWJlNGIwNjZhMjY5ZWUxYmU3MWFmZGNhY2MxYmFjZmI3OTE0OWMuLjFiM2E5ODQwYzZjZjU0YmVj
ZmI0MzBiNmQ2MzgxY2JkM2E4YTEwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYkluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYklu
c3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3LmpzCkBAIC01OSw2ICs1OSw3IEBAIFdJLldl
Ykluc3BlY3RvckV4dGVuc2lvblRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uVGFiQ29udGVudFZpCiAKICAgICAvLyBQdWJsaWMKIAorICAgIGdldCBleHRlbnNpb24o
KSB7IHJldHVybiB0aGlzLl9leHRlbnNpb247IH0KICAgICBnZXQgZXh0ZW5zaW9uVGFiSUQoKSB7
IHJldHVybiB0aGlzLl9leHRlbnNpb25UYWJJRDsgfQogICAgIGdldCBpZnJhbWVFbGVtZW50KCkg
eyByZXR1cm4gdGhpcy5faWZyYW1lRWxlbWVudDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCA1Y2JlMGQyNzVlZTYzNDY0
M2JjZjkzYzY2MTBhMDU3YWI2ZGZkOWZiLi45Zjk0MGZmOGUwMGZkYTkxNjljMmY0YzQyZTY3ZDFj
YzkzZDQwMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0KQEAgLTIyNiw3ICsyMjYsNyBAQCAtIChXS1dlYlZpZXcgKilleHRlbnNp
b25Ib3N0V2ViVmlldwogICAgIHJldHVybiBzZWxmLmluc3BlY3RvcldlYlZpZXc7CiB9CiAKLS0g
KHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlz
cGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIK
Ky0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQg
ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25CdW5kbGVJZGVu
dGlmaWVyIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogICAgIC8vIEl0
IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBtZXRob2QgcHJpb3IgdG8gY3JlYXRpbmcgYSBmcm9u
dGVuZCAoaS5lLiwgd2l0aCAtY29ubmVjdCBvciAtc2hvdykuCkBAIC0yMzUsNyArMjM1LDcgQEAg
LSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBk
aXNwbGF5TmFtZTooTlNTdHJpbmcgKikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIF9p
bnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5z
aW9uSUQsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxS
ZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
PiByZXN1bHQpIG11dGFibGUgeworICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KS0+cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZp
ZXIsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVy
ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxSZWZQ
dHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgY2Fw
dHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5
OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0sIG5p
bCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaAppbmRleCA2
ZGRhNzVhMTMwN2QyOWJmMmFlZmUxNzA4MjdjMzQ5YTZmOGI2MzUxLi5hMDI5Mzc5YmExMzIxMGIy
ZWJhODg2MWY1YTViMWU3N2IzZmZhZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAg
LTM3LDEyICszNywxMyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogLyoqCiAgKiBAYWJzdHJh
Y3QgUmVnaXN0ZXJzIGEgV2ViIEV4dGVuc2lvbiB3aXRoIHRoZSBhc3NvY2lhdGVkIFdlYiBJbnNw
ZWN0b3IuCiAgKiBAcGFyYW0gZXh0ZW5zaW9uSUQgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhl
IGV4dGVuc2lvbi4KKyAqIEBwYXJhbSBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyIEEgYnVuZGxl
IGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCiAgKiBAcGFyYW0gZGlzcGxheU5hbWUgQSBs
b2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLgogICogQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gcmVn
aXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgogICoKICAqIFdlYiBFeHRlbnNpb25zIGluIFdl
YiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkgYXJlIHJlZ2lzdGVyZWQuCiAg
Ki8KLS0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjooTlNT
dHJpbmcgKilleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyIGRpc3BsYXlOYW1lOihOU1N0cmluZyAq
KWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFi
bGUsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7
CiAKIC8qKgogICogQGFic3RyYWN0IFVucmVnaXN0ZXJzIGEgV2ViIEV4dGVuc2lvbiB3aXRoIHRo
ZSBhc3NvY2lhdGVkIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggZDEwNjkwNmVkMDNlNjAwZTAzODFiNWUyMmRjZDNkYjAx
NmU5NTRlMy4uMDBiMjUwZTVkM2VlNGRiZDQ1MzdlMjNmY2IxZjZlNDRhNDU0NjA3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMTcwLDcgKzE3
MCw3IEBAIC0gKFdLV2ViVmlldyAqKWV4dGVuc2lvbkhvc3RXZWJWaWV3CiAgICAgcmV0dXJuIHNl
bGYud2ViVmlldzsKIH0KIAotLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJp
bmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIF9XS0luc3BlY3RvckV4dGVuc2lvbiAq
IF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25X
aXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyIGRpc3BsYXlOYW1lOihOU1N0cmlu
ZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKICAgICAvLyBJZiB0aGlzIG1ldGhvZCBpcyBj
YWxsZWQgcHJpb3IgdG8gY3JlYXRpbmcgYSBmcm9udGVuZCB3aXRoIC1sb2FkRm9yRGVidWdnYWJs
ZTpiYWNrZW5kQ29tbWFuZHNVUkw6LCBpdCB3aWxsIG5vdCBzdWNjZWVkLgpAQCAtMTc5LDcgKzE3
OSw3IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5z
aW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCktPnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lv
bklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChF
eHBlY3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHkt
PmV4dGVuc2lvbkNvbnRyb2xsZXIoKS0+cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGV4
dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBbcHJvdGVjdGVkRXh0ZW5zaW9u
SUQgPSByZXRhaW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4
cGVjdGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJy
b3IoKSkgfV0sIG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA3YmQxZTI4ZjRmMTk2YmYx
YmQzMzJjY2M4M2MxYjllOGIyZjM5YmRlLi5jZDExNzZlNzE1N2UzYWZiOWZhYTdmM2M3OWQyOGRi
Y2Q5NTNlYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAKQEAgLTkwLDE1ICs5MCwxNSBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5OjppbnNwZWN0b3JGcm9udGVuZFdpbGxDbG9zZSgpCiAKIC8vIEFQ
SQogCi12b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0
ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbkJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgd2hlbkZyb250
ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBleHRlbnNpb25JRCwg
ZGlzcGxheU5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICgpIG11dGFibGUgeworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIs
IGRpc3BsYXlOYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1f
aW5zcGVjdG9yUGFnZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhw
ZWN0ZWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3Rv
clBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklELCBkaXNwbGF5TmFt
ZSB9LCBbc3Ryb25nVGhpcyA9IFJlZiB7ICp3ZWFrVGhpcy5nZXQoKSB9LCBleHRlbnNpb25JRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oRXhwZWN0ZWQ8
dm9pZCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsg
ZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIsIGRpc3BsYXlOYW1lIH0sIFtz
dHJvbmdUaGlzID0gUmVmIHsgKndlYWtUaGlzLmdldCgpIH0sIGV4dGVuc2lvbklELCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShFeHBlY3RlZDx2b2lkLCBJ
bnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5oCmluZGV4IGJiMDg5MTNkM2ZkM2M4ZmEzN2NmM2Q2NzEyOTcxYTRl
ZTk5MjFkOGQuLmQxOTdjOWVhYzIwYjUyYzJkOTIzNWU2ZGEwNzdhOGQ2ZDZiYTBhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gQVBJLgotICAgIHZvaWQg
cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxS
ZWZQdHI8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9y
Pik+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFJlZlB0cjxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4sIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I+KT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6
RXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dm9pZCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGNyZWF0ZVRhYkZvckV4
dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiwgY29uc3QgU3RyaW5nJiB0YWJO
YW1lLCBjb25zdCBVUkwmIHRhYkljb25VUkwsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8SW5zcGVjdG9yOjpFeHRlbnNpb25UYWJJRCwg
SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4pPiYmKTsKICAgICB2b2lkIGV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdFNvdXJjZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxVUkw+JiBjb250ZXh0U2VjdXJpdHlPcmlnaW4sIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSW5zcGVjdG9yOjpFeHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0KT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggOWRlZGYwY2Yz
YTRjMDhkY2RkZWU4MzhlZTRkNjFmYTFhODJmNWRkNC4uNzIxNmI5M2QzNjNjMjQyOGFlMzc3NzBh
NGU1NDUzY2Q5ZjgzY2ZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0ZDo6b3B0aW9uYWw8SW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzCiAK
IC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCiAKLXZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3I6OkV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx2b2lkLCBJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uQnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDx2b2lkLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJy
b3I6OkludmFsaWRSZXF1ZXN0KSk7CkBAIC0xMTgsNiArMTE4LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rv
cjo6RXh0ZW4KIAogICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgewogICAg
ICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lvbklEKSwKKyAgICAgICAgSlNPTjo6VmFs
dWU6OmNyZWF0ZShleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyKSwKICAgICAgICAgSlNPTjo6VmFs
dWU6OmNyZWF0ZShkaXNwbGF5TmFtZSksCiAgICAgfTsKICAgICBtX2Zyb250ZW5kQ2xpZW50LT5m
cm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInJl
Z2lzdGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25S
ZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmgKaW5kZXggNmU5NmYwOGEwY2MyMzRmZTc0MDliMzVlY2VlMDJjNGI0MmFmNmE5
Ni4uNGE3OTdlM2ZjZDViODU3YzBlNzFmZjE4NWViZWY2NjAxYTc2MTY5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIElQQyBtZXNzYWdlcy4KLSAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uSUQmLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPHZvaWQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4m
Jik7CisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGVuc2lv
bklEJiwgY29uc3QgU3RyaW5nJiBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHZvaWQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5zaW9uSUQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPHZvaWQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+KT4mJik7CiAgICAgdm9p
ZCBjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IFN0cmluZyYgdGFiTmFtZSwgY29uc3QgVVJMJiB0YWJJY29uVVJMLCBjb25zdCBVUkwmIHNv
dXJjZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxJbnNwZWN0b3I6OkV4dGVu
c2lvblRhYklELCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPik+JiYpOwogICAgIHZvaWQgZXZh
bHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYsIGNv
bnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGZyYW1l
VVJMLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0eU9yaWdpbiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW5z
cGVjdG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCmluZGV4IDg1ODEyZDc1NzljOGE3
NzI4YWQ5NDcwZmI5NjExOTAwZmEwYmI4MGQuLmU0ODcyYzQ3ZTdiNjFiOTdmMDhiMGE5OGIyMTNk
NjNkOTNiMDc3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4
dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3RlZDx2b2lkLCBJbnNwZWN0
b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAgUmVnaXN0ZXJFeHRlbnNpb24o
U3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciwgU3Ry
aW5nIGRpc3BsYXlOYW1lKSAtPiAoRXhwZWN0ZWQ8dm9pZCwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBBc3luYwogICAgIFVucmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVu
c2lvbklEKSAtPiAoRXhwZWN0ZWQ8dm9pZCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcj4gcmVz
dWx0KSBBc3luYwogCiAgICAgQ3JlYXRlVGFiRm9yRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25J
RCwgU3RyaW5nIHRhYk5hbWUsIFVSTCB0YWJJY29uVVJMLCBVUkwgc291cmNlVVJMKSAtPiAoRXhw
ZWN0ZWQ8U3RyaW5nLCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmI5ZmNm
MTQ4NDIzMjNiNDM3NzkzOTdkZTI5OTAxMjE3NmQ4NmJlNy4uNmM5NWRmNmZkZjc4MmIwMDNjYmY1
YTM4NGRkNzIyMjUwNjUyYTQ2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTExLTE0ICBCSiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJB
Y3RpdmF0aW9uIGRpYWdub3N0aWMgZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzEwMQorICAgICAgICA8cmRhcjovLzg1MjY0OTIxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgIFN0YXJ0IHVzaW5nIG5ldyBtZXRob2QgcGFyYW1l
dGVyICdleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyJy4KKwogMjAyMS0xMS0xMyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgVUlTY3Jp
cHRDb250cm9sbGVyLnNlbmRFdmVudFN0cmVhbSgpIGZvciBEdW1wUmVuZGVyVHJlZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4
dGVuc2lvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb24ubW0KaW5kZXggY2UwMTMxZTdhZjQ1NzNkYTNlN2ZhODAxMzkwZDk4NGQ3
YjMwMmFjNS4uNjZkOTMxNmUzZjQ5YTkxZjg4MmQ1YWVmNGJlNjkwMWExMDVlMWRiZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4
dGVuc2lvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0xMDAsMTEgKzEwMCwxMiBAQCBURVNUKFdLSW5zcGVj
dG9yRXh0ZW5zaW9uLCBDYW5FdmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOwogCiAg
ICAgYXV0byBleHRlbnNpb25JRCA9IFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZzsKKyAgICBhdXRv
IGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXIgPSBAIm9yZy53ZWJraXQuVGVzdFdlYktpdEFQSS5G
aXJzdEV4dGVuc2lvbiI7CiAgICAgYXV0byBleHRlbnNpb25EaXNwbGF5TmFtZSA9IEAiRmlyc3RF
eHRlbnNpb24iOwogCiAgICAgLy8gUmVnaXN0ZXIgdGhlIHRlc3QgZXh0ZW5zaW9uLgogICAgIHBl
bmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9y
XSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpleHRlbnNpb25JRCBkaXNwbGF5TmFtZTpleHRlbnNp
b25EaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJy
b3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICBb
W3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZXh0ZW5zaW9uSUQg
ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjpleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyIGRpc3Bs
YXlOYW1lOmV4dGVuc2lvbkRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVu
c2lvbikgewogICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChleHRlbnNpb24pOwogICAgICAgICBzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gPSBleHRl
bnNpb247CkBAIC0xOTAsMTEgKzE5MSwxMiBAQCBURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uLCBF
eHRlbnNpb25UYWJJc1BlcnNpc3RlbnQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
aWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CiAKICAgICBhdXRvIGV4dGVuc2lvbklEID0g
W05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nOworICAgIGF1dG8gZXh0ZW5zaW9uQnVuZGxlSWRlbnRp
ZmllciA9IEAib3JnLndlYmtpdC5UZXN0V2ViS2l0QVBJLlNlY29uZEV4dGVuc2lvbiI7CiAgICAg
YXV0byBleHRlbnNpb25EaXNwbGF5TmFtZSA9IEAiU2Vjb25kRXh0ZW5zaW9uIjsKIAogICAgIC8v
IFJlZ2lzdGVyIHRoZSB0ZXN0IGV4dGVuc2lvbi4KICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQgPSBmYWxzZTsKLSAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25X
aXRoSUQ6ZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRl
bnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3Jd
IHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmV4dGVuc2lvbklEIGV4dGVuc2lvbkJ1bmRsZUlkZW50
aWZpZXI6ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciBkaXNwbGF5TmFtZTpleHRlbnNpb25EaXNw
bGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9X
S0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKICAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsKICAg
ICAgICAgc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uID0gZXh0ZW5zaW9uOwpAQCAtMzA3LDExICsz
MDksMTIgQEAgVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbiwgRXZhbHVhdGVTY3JpcHRJbkV4dGVu
c2lvblRhYkNhblJldHVyblByb21pc2VzKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOwogCiAgICAgYXV0byBleHRlbnNpb25JRCA9
IFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZzsKKyAgICBhdXRvIGV4dGVuc2lvbkJ1bmRsZUlkZW50
aWZpZXIgPSBAIm9yZy53ZWJraXQuVGVzdFdlYktpdEFQSS5UaGlyZEV4dGVuc2lvbiI7CiAgICAg
YXV0byBleHRlbnNpb25EaXNwbGF5TmFtZSA9IEAiVGhpcmRFeHRlbnNpb24iOwogCiAgICAgLy8g
UmVnaXN0ZXIgdGhlIHRlc3QgZXh0ZW5zaW9uLgogICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOwotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldp
dGhJRDpleHRlbnNpb25JRCBkaXNwbGF5TmFtZTpleHRlbnNpb25EaXNwbGF5TmFtZSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVu
c2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0g
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZXh0ZW5zaW9uSUQgZXh0ZW5zaW9uQnVuZGxlSWRlbnRp
ZmllcjpleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyIGRpc3BsYXlOYW1lOmV4dGVuc2lvbkRpc3Bs
YXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgewogICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOwogICAg
ICAgICBzaGFyZWRJbnNwZWN0b3JFeHRlbnNpb24gPSBleHRlbnNpb247CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9u
RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5z
cGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUubW0KaW5kZXggYjEyZjJmNmRhZGQ3NjVkNDNkMDVkM2Rl
NzQ1YzAxZTYyYzUzNmU5YS4uNjgyNTkzNWVhM2RjNDExZDhjZTgwZmU0YmIyNDZhNGI2YzQ0NDkx
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0lu
c3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZS5tbQpAQCAtMTA4LDEx
ICsxMDgsMTIgQEAgVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkRlbGVnYXRlLCBTaG93QW5kSGlk
ZVRhYkNhbGxiYWNrcykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkKTsKIAogICAgIGF1dG8gZXh0ZW5zaW9uSUQgPSBbTlNVVUlEIFVV
SURdLlVVSURTdHJpbmc7CisgICAgYXV0byBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyID0gQCJj
b20uYXBwbGUud2Via2l0LkZpcnN0RXh0ZW5zaW9uIjsKICAgICBhdXRvIGV4dGVuc2lvbkRpc3Bs
YXlOYW1lID0gQCJGaXJzdEV4dGVuc2lvbiI7CiAKICAgICAvLyBSZWdpc3RlciB0aGUgdGVzdCBl
eHRlbnNpb24uCiAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Ci0gICAgW1t3
ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmV4dGVuc2lvbklEIGRp
c3BsYXlOYW1lOmV4dGVuc2lvbkRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJv
ciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4
dGVuc2lvbikgeworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldp
dGhJRDpleHRlbnNpb25JRCBleHRlbnNpb25CdW5kbGVJZGVudGlmaWVyOmV4dGVuc2lvbkJ1bmRs
ZUlkZW50aWZpZXIgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlzcGxheU5hbWUgY29tcGxldGlvbkhh
bmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24g
KiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAg
ICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CiAgICAgICAgIHNoYXJlZEluc3BlY3Rv
ckV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKQEAgLTE4Miw5ICsxODMsMTAgQEAgVEVTVChXS0luc3Bl
Y3RvckV4dGVuc2lvbkRlbGVnYXRlLCBJbnNwZWN0ZWRQYWdlTmF2aWdhdGVkQ2FsbGJhY2tzKQog
CiAgICAgLy8gUmVnaXN0ZXIgdGhlIHRlc3QgZXh0ZW5zaW9uLgogICAgIGF1dG8gZXh0ZW5zaW9u
SUQgPSBbTlNVVUlEIFVVSURdLlVVSURTdHJpbmc7CisgICAgYXV0byBleHRlbnNpb25CdW5kbGVJ
ZGVudGlmaWVyID0gQCJjb20uYXBwbGUud2Via2l0LlNlY29uZEV4dGVuc2lvbiI7CiAgICAgYXV0
byBleHRlbnNpb25EaXNwbGF5TmFtZSA9IEAiU2Vjb25kRXh0ZW5zaW9uIjsKICAgICBwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKLSAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVn
aXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6ZXh0ZW5zaW9uRGlz
cGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgW1t3ZWJW
aWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmV4dGVuc2lvbklEIGV4dGVu
c2lvbkJ1bmRsZUlkZW50aWZpZXI6ZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllciBkaXNwbGF5TmFt
ZTpleHRlbnNpb25EaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24p
IHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwo
ZXh0ZW5zaW9uKTsKICAgICAgICAgc2hhcmVkSW5zcGVjdG9yRXh0ZW5zaW9uID0gZXh0ZW5zaW9u
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0lu
c3BlY3RvckV4dGVuc2lvbkhvc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbQppbmRleCAzMWNjNjI0NWI2M2NiOGFl
ZTgxYmEyNzNlNWJlNDAwNDY4N2RhOTJhLi5mZjcwZmQ2YzE5NDViM2EzNzE4MDA2ZGIwNWRkOTkz
ZmUwZGI3NDE1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbQpAQCAtNjksNyAr
NjksNyBAQCBURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCwgUmVnaXN0ZXJFeHRlbnNpb24p
CiAKICAgICAvLyBOb3JtYWwgcmVnaXN0cmF0aW9uLgogICAgIHBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCA9IGZhbHNlOwotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lv
bldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24iIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdp
c3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXI6QCJj
b20uYXBwbGUud2Via2l0LkZpcnN0RXh0ZW5zaW9uIiBkaXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5z
aW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0lu
c3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKICAgICAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsKIApAQCAt
NzksNyArNzksNyBAQCBURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCwgUmVnaXN0ZXJFeHRl
bnNpb24pCiAKICAgICAvLyBEb3VibGUgcmVnaXN0cmF0aW9uLgogICAgIHBlbmRpbmdDYWxsYmFj
a1dhc0NhbGxlZCA9IGZhbHNlOwotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4
dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24iIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9y
XSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZp
ZXI6QCJjb20uYXBwbGUud2Via2l0LkZpcnN0RXh0ZW5zaW9uIiBkaXNwbGF5TmFtZTpAIkZpcnN0
RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Is
IF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKICAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGVycm9yKTsKICAgICAgICAgRVhQRUNUX05VTEwoZXh0ZW5zaW9uKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLmxvY2FsaXplZEZhaWx1cmVSZWFzb24gY29udGFp
bnNTdHJpbmc6QCJSZWdpc3RyYXRpb25GYWlsZWQiXSk7CkBAIC05MCw3ICs5MCw3IEBAIFRFU1Qo
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LCBSZWdpc3RlckV4dGVuc2lvbikKIAogICAgIC8vIFR3
byByZWdpc3RyYXRpb25zLgogICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwot
ICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpzZWNvbmRJ
RCBkaXNwbGF5TmFtZTpAIlNlY29uZEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vy
cm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUg
ZXh0ZW5zaW9uKSB7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9u
V2l0aElEOnNlY29uZElEIGV4dGVuc2lvbkJ1bmRsZUlkZW50aWZpZXI6QCJjb20uYXBwbGUud2Vi
a2l0LlNlY29uZEV4dGVuc2lvbiIgZGlzcGxheU5hbWU6QCJTZWNvbmRFeHRlbnNpb24iIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgewogICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOwogCkBAIC0xMTksNyArMTE5
LDcgQEAgVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QsIFVucmVnaXN0ZXJFeHRlbnNpb24p
CiAKICAgICAvLyBVbnJlZ2lzdGVyIGEga25vd24gZXh0ZW5zaW9uLgogICAgIHBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCA9IGZhbHNlOwotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3Rl
ckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24iIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgIFtbd2ViVmlldyBfaW5zcGVj
dG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGV4dGVuc2lvbkJ1bmRsZUlkZW50
aWZpZXI6QCJjb20uYXBwbGUud2Via2l0LkZpcnN0RXh0ZW5zaW9uIiBkaXNwbGF5TmFtZTpAIkZp
cnN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJy
b3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKICAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9u
KTsKICAgICAgICAgZm91bmRFeHRlbnNpb24gPSBleHRlbnNpb247CkBAIC0xMzUsNyArMTM1LDcg
QEAgVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QsIFVucmVnaXN0ZXJFeHRlbnNpb24pCiAK
ICAgICAvLyBSZS1yZWdpc3RlciBhbiBleHRlbnNpb24uCiAgICAgcGVuZGluZ0NhbGxiYWNrV2Fz
Q2FsbGVkID0gZmFsc2U7Ci0gICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5z
aW9uV2l0aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4dGVuc2lvbiIgY29tcGxldGlv
bkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNp
b24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJl
Z2lzdGVyRXh0ZW5zaW9uV2l0aElEOmZpcnN0SUQgZXh0ZW5zaW9uQnVuZGxlSWRlbnRpZmllcjpA
ImNvbS5hcHBsZS53ZWJraXQuRmlyc3RFeHRlbnNpb24iIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRl
bnNpb24iIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgewogICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOwogICAg
ICAgICBmb3VuZEV4dGVuc2lvbiA9IGV4dGVuc2lvbjsK
</data>
<flag name="review"
          id="469165"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>