<?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>71267</bug_id>
          
          <creation_ts>2011-10-31 23:40:30 -0700</creation_ts>
          <short_desc>[chromium] Slow down commit and draw rate based on visibility and draw completion</short_desc>
          <delta_ts>2011-11-02 14:57:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71269</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nat Duca">nduca</reporter>
          <assigned_to name="Nat Duca">nduca</assigned_to>
          <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>493762</commentid>
    <comment_count>0</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-31 23:40:30 -0700</bug_when>
    <thetext>[chromium] Slow down commit and draw rate based on visibility and draw completion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493763</commentid>
    <comment_count>1</comment_count>
      <attachid>113133</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-10-31 23:40:54 -0700</bug_when>
    <thetext>Created attachment 113133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493786</commentid>
    <comment_count>2</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-01 00:34:42 -0700</bug_when>
    <thetext>This patch does three things:
1. Removes the setNeedsRedraw that CCThreadProxy used to force after commit [since that is now inside the scheduler]
2. Does not let a new commit begin until the previous commit makes it onscreen.
2. Does not draw when invisible [and because of #2, does not begin a new commit when invisible]

Based on measurements, this should help stabilize frame rates and reduce overlap.

This depends on changing the handling of setVisible(false) from triggering a commit to something more situation-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494111</commentid>
    <comment_count>3</comment_count>
      <attachid>113133</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-01 13:51:39 -0700</bug_when>
    <thetext>Comment on attachment 113133
Patch

Logic looks good but I&apos;m not sure I understand the distinction between immediate state and member bools on CCSchedulerStateMachine. It feels a bit odd to push visible/not visible to the state machine on every nextAction() since it doesn&apos;t change very much - but I suspect there&apos;s some reason for the distinction other than frequency of change. Let&apos;s sync in person</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494143</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-01 14:16:39 -0700</bug_when>
    <thetext>BTW this merge conflicts with your STREQ change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494883</commentid>
    <comment_count>5</comment_count>
      <attachid>113375</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-02 13:59:00 -0700</bug_when>
    <thetext>Created attachment 113375
Without ImmediateState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494896</commentid>
    <comment_count>6</comment_count>
      <attachid>113375</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-02 14:11:29 -0700</bug_when>
    <thetext>Comment on attachment 113375
Without ImmediateState

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

R=me, one comment for you to think about and do what you think is best.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScheduler.cpp:102
&gt; +    // Adjust the state machine&apos;s visbility state to the proxy&apos;s visibility state
&gt; +    m_stateMachine.setVisible(m_client-&gt;visible());

For your consideration: instead of pulling visible state from the client here, could the client push the visible state down when it changes to the scheduler? It&apos;s a little easier for me to reason about interactions when state tends to flow in one direction.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSchedulerStateMachine.h:32
&gt; +// The CCSched decides how to coordinates main thread activites

looks like you accidentally part of this comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494937</commentid>
    <comment_count>7</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-02 14:50:11 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; For your consideration: instead of pulling visible state from the client here, could the client push the visible state down when it changes to the scheduler? It&apos;s a little easier for me to reason about interactions when state tends to flow in one direction.

Great point. Done. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494941</commentid>
    <comment_count>8</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-02 14:57:41 -0700</bug_when>
    <thetext>Committed r99100: &lt;http://trac.webkit.org/changeset/99100&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113133</attachid>
            <date>2011-10-31 23:40:54 -0700</date>
            <delta_ts>2011-11-02 13:58:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71267-20111031234053.patch</filename>
            <type>text/plain</type>
            <size>41507</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5MTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDcyY2FlMzA0ZTk2Njk0
ZjVjZDczYWUyM2Q4MGMwZmNiNzA0OGZhLi4wOGUyMTM4NWRlYzIwNDMzZTAyOWM3OGRhZDhkMDc1
NTEyMmFkNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMTAtMzEgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2xvdyBkb3du
IGNvbW1pdCBhbmQgZHJhdyByYXRlIGJhc2VkIG9uIHZpc2liaWxpdHkgYW5kIGRyYXcgY29tcGxl
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEy
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp2aXNpYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjp2aXNpYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NjaGVkdWxlcjo6YmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dmlzaWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTEwLTI4ICBO
YXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENvbm5l
Y3QgQ0NUaHJlYWRQcm94eSB0byBGcmFtZVJhdGVDb250cm9sbGVyIGFuZCBTY2hlZHVsZXJTdGF0
ZU1hY2hpbmUgdmlhIENDU2NoZWR1bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNm
OTgxOGQyNDA3MTNkNjEyZDliZTVmNDg3YzM2Y2Q1NmRjYWQwMzkuLmU5MzJmYWJkMDg1NWZlYzk2
ZmY0N2YzZGExYzg4Njk4MjQzNmRlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTEtMTAtMzEgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gU2xvdyBkb3duIGNvbW1pdCBhbmQgZHJhdyByYXRlIGJhc2Vk
IG9uIHZpc2liaWxpdHkgYW5kIGRyYXcgY29tcGxldGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1Nj
aGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNs
aWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1NjaGVkdWxlckNsaWVu
dDo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDU2NoZWR1bGVyQ2xp
ZW50Ojp2aXNpYmxlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToKKwogMjAxMS0xMC0y
OCAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBD
b25uZWN0IENDVGhyZWFkUHJveHkgdG8gRnJhbWVSYXRlQ29udHJvbGxlciBhbmQgU2NoZWR1bGVy
U3RhdGVNYWNoaW5lIHZpYSBDQ1NjaGVkdWxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApp
bmRleCBhNGNjNzkzYWY3ZDNhNTg4YTRmYzMyN2U0Y2E1OGRjMWVkZDBjMDA2Li5lYjhmNDMwZjZk
MDYxOWEyNDA5ZDQ1MDg3OTVkNTUwMTZjMzRhMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaApAQCAtMTU4LDcgKzE1OCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsgfQogICAgIFRleHR1cmVN
YW5hZ2VyKiBjb250ZW50c1RleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CiAKKyAgICBib29sIHZpc2li
bGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9v
bCk7CisKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKICAgICB2
b2lkIHVwZGF0ZUxheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmlu
ZGV4IDJhZmZlYTI2YTFkN2ZhZTIwMmNiZjYwYmRlMTEzNDdhY2U2OWQyY2UuLjVhNjhmMGZlMzA4
NGNlOGQxZjVlMmE3MGM3MDFhZmE3Yzc1MDE0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIENDTGF5ZXJJbXBsKiBy
b290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllckltcGwuZ2V0KCk7IH0KICAgICB2
b2lkIHNldFJvb3RMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7CiAKKyAgICBib29sIHZp
c2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAgICB2b2lkIHNldFZpc2libGUo
Ym9vbCk7CiAgICAgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVs
RXZlbnRIYW5kbGVycykgeyBtX2hhdmVXaGVlbEV2ZW50SGFuZGxlcnMgPSBoYXZlV2hlZWxFdmVu
dEhhbmRsZXJzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmNwcAppbmRleCA1MGVlM2FiMTUxZWRi
Y2U3YWUzY2FjODNiMmY3NDgxMDUxOTk4MDU4Li4xZjZhZmMyNjc3MjgyMzdlM2MwZDE4Y2FhZDRm
Y2Y5MzA2NzA2NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCkBAIC04OSwxNiArODksMjAg
QEAgdm9pZCBDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSgpCiAgICAgICAgIG1fdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmcgPSBmYWxzZTsKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUuYmVnaW5VcGRh
dGVNb3JlUmVzb3VyY2VzQ29tcGxldGUobV9jbGllbnQtPmhhc01vcmVSZXNvdXJjZVVwZGF0ZXMo
KSk7CiAgICAgfQorICAgIFRSQUNFX0VWRU5UKCJDQ1NjaGVkdWxlcjo6YmVnaW5GcmFtZSIsIHRo
aXMsIDApOwogICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKTsKIH0KIAogdm9pZCBDQ1NjaGVkdWxl
cjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkltbWVk
aWF0ZVN0YXRlIGltbWVkaWF0ZVN0YXRlKQogeworICAgIC8vIEFkanVzdCBpbW1lZGlhdGUgc3Rh
dGUgd2l0aCB0aGUgc3RhdGUgd2Uga25vdyBhYm91dC4KKyAgICBpZiAobV9jbGllbnQtPnZpc2li
bGUoKSkKKyAgICAgICAgaW1tZWRpYXRlU3RhdGUgPSBzdGF0aWNfY2FzdDxDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6SW1tZWRpYXRlU3RhdGU+KGltbWVkaWF0ZVN0YXRlIHwgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9WSVNJQkxFKTsKKwogICAgIC8vIEVhcmx5IG91
dCBzbyB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxlc3MgcHJvY2Vzc1NjaGVk
dWxlZEFjdGlvbnMuCiAgICAgaWYgKG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oaW1tZWRpYXRl
U3RhdGUpID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpwcm9jZXNzU2NoZWR1bGVk
QWN0aW9ucyIsIHRoaXMsIDApOwogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24g
YWN0aW9uOwogICAgIGRvIHsKICAgICAgICAgYWN0aW9uID0gbV9zdGF0ZU1hY2hpbmUubmV4dEFj
dGlvbihpbW1lZGlhdGVTdGF0ZSk7CkBAIC0xMTksNyArMTIzLDcgQEAgdm9pZCBDQ1NjaGVkdWxl
cjo6cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkltbWVk
aWF0ZVN0YXQKICAgICAgICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dh
cCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgbV9zdGF0ZU1hY2hp
bmUudXBkYXRlU3RhdGUoYWN0aW9uKTsKKyAgICAgICAgbV9zdGF0ZU1hY2hpbmUudXBkYXRlU3Rh
dGUoYWN0aW9uLCBpbW1lZGlhdGVTdGF0ZSk7CiAKICAgICAgICAgLy8gSWYgd2Ugd2VyZSBqdXN0
IHRvbGQgdG8gdXBkYXRlIHJlc291cmNlcywgYnV0IHRoZXJlIGFyZSBubyBtb3JlCiAgICAgICAg
IC8vIHBlbmRpbmcsIHRoZW4gdGVsbCB0aGUgc3RhdGUgbWFjaGluZSB0aGF0IHRoZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2NoZWR1bGVyLmgKaW5kZXggMzg0YTVlNThjNzE2NjU2YTRjOTA5ZTI5MmE2YTNmZGM2YjQ5YjU1
MC4uMWUyMTEwZGU1NDVjNzA3NGYxYTVmZDc4N2EyZDIxZmNiZTVlNDNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
aGVkdWxlci5oCkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIENDVGhyZWFkOwogY2xhc3MgQ0NTY2hl
ZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCB2aXNpYmxlKCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCmluZGV4IDQyODFiZGRlZDEx
MGYxYWI0ZTIwMDE2N2NlMTRiOGQ3YzYxZjc3YmQuLjk0MTVhZmNlNDQ5MjE2MDQyMGRkNWE4Njkw
ZGE5Y2QwNWFiMDIxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFj
aGluZS5jcHAKQEAgLTM3LDIxICszNywyMiBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUoKQogQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFjdGlvbiBD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZSBpbW1lZGlh
dGVTdGF0ZSkgY29uc3QKIHsKICAgICBib29sIGluc2lkZVZTeW5jVGljayA9IGltbWVkaWF0ZVN0
YXRlICYgSU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQzsKKyAgICBib29sIHZpc2libGUgPSBp
bW1lZGlhdGVTdGF0ZSAmIElNTUVESUFURV9TVEFURV9WSVNJQkxFOwogICAgIHN3aXRjaCAobV9j
b21taXRTdGF0ZSkgewogICAgIGNhc2UgQ09NTUlUX1NUQVRFX0lETEU6Ci0gICAgICAgIGlmICht
X25lZWRzUmVkcmF3ICYmIGluc2lkZVZTeW5jVGljaykKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRy
YXcgJiYgaW5zaWRlVlN5bmNUaWNrICYmIHZpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gQUNU
SU9OX0RSQVc7Ci0gICAgICAgIGlmIChtX25lZWRzQ29tbWl0KQorICAgICAgICBpZiAobV9uZWVk
c0NvbW1pdCAmJiB2aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9GUkFN
RTsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAgY2FzZSBDT01NSVRfU1RBVEVf
RlJBTUVfSU5fUFJPR1JFU1M6Ci0gICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIGluc2lkZVZT
eW5jVGljaykKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgaW5zaWRlVlN5bmNUaWNrICYm
IHZpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7CiAgICAgICAgIHJldHVy
biBBQ1RJT05fTk9ORTsKIAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNF
UzoKLSAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgaW5zaWRlVlN5bmNUaWNrKQorICAgICAg
ICBpZiAobV9uZWVkc1JlZHJhdyAmJiBpbnNpZGVWU3luY1RpY2sgJiYgdmlzaWJsZSkKICAgICAg
ICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgaWYgKCFtX3VwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVM7CkBAIC01OSwxOCArNjAsMjUgQEAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbihJbW1lZGlhdGVTdGEK
IAogICAgIGNhc2UgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVDoKICAgICAgICAgcmV0dXJu
IEFDVElPTl9DT01NSVQ7CisKKyAgICBjYXNlIENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJT
VF9EUkFXOgorICAgICAgICBpZiAobV9uZWVkc1JlZHJhdyAmJiBpbnNpZGVWU3luY1RpY2sgJiYg
dmlzaWJsZSkKKyAgICAgICAgICAgIHJldHVybiBBQ1RJT05fRFJBVzsKKyAgICAgICAgcmV0dXJu
IEFDVElPTl9OT05FOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gQUNUSU9OX05PTkU7CiB9CiAKLXZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0
ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCit2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRh
dGVTdGF0ZShBY3Rpb24gYWN0aW9uLCBJbW1lZGlhdGVTdGF0ZSBpbW1lZGlhdGVTdGF0ZSkKIHsK
KyAgICBib29sIHZpc2libGUgPSBpbW1lZGlhdGVTdGF0ZSAmIElNTUVESUFURV9TVEFURV9WSVNJ
QkxFOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBBQ1RJT05fTk9ORToKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgY2FzZSBBQ1RJT05fQkVHSU5fRlJBTUU6CisgICAgICAgIEFTU0VS
VCh2aXNpYmxlKTsKICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9GUkFNRV9J
Tl9QUk9HUkVTUzsKICAgICAgICAgbV9uZWVkc0NvbW1pdCA9IGZhbHNlOwogICAgICAgICByZXR1
cm47CkBAIC04MSwxMiArODksMTkgQEAgdm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6dXBk
YXRlU3RhdGUoQWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBBQ1RJ
T05fQ09NTUlUOgotICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7Cisg
ICAgICAgIGlmIChtX25lZWRzQ29tbWl0IHx8ICF2aXNpYmxlKQorICAgICAgICAgICAgbV9jb21t
aXRTdGF0ZSA9IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CiAgICAg
ICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFD
VElPTl9EUkFXOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFsc2U7CisgICAgICAgIGlmICht
X2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXKSB7Cisg
ICAgICAgICAgICBBU1NFUlQobV9uZWVkc0NvbW1pdCk7CisgICAgICAgICAgICBtX2NvbW1pdFN0
YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oCmluZGV4IDNm
NDFlNjAzODBmYjA2MTI4ZTAwYWQ0ZGQ3OTliMDljOTA1MjQ5MTAuLjlhMjU1OTIzZmNiZDYxNjZk
MDY4MDcwOTY3NmJkMzE5ZGQ2NDMxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmUuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIENPTU1JVF9T
VEFURV9GUkFNRV9JTl9QUk9HUkVTUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUywKICAgICAgICAgQ09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKKyAgICAgICAg
Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsCiAgICAgfTsKIAogICAgIGJvb2wg
Y29tbWl0UGVuZGluZygpIGNvbnN0CkBAIC02Nyw5ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgZW51
bSBJbW1lZGlhdGVTdGF0ZSB7CiAgICAgICAgIElNTUVESUFURV9TVEFURV9OT05FID0gMCwKICAg
ICAgICAgSU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQyA9IDEsCisgICAgICAgIElNTUVESUFU
RV9TVEFURV9WSVNJQkxFID0gMiwKICAgICB9OwogICAgIEFjdGlvbiBuZXh0QWN0aW9uKEltbWVk
aWF0ZVN0YXRlKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVN0YXRlKEFjdGlvbik7CisgICAgdm9p
ZCB1cGRhdGVTdGF0ZShBY3Rpb24sIEltbWVkaWF0ZVN0YXRlKTsKIAogICAgIC8vIEluZGljYXRl
cyB0aGF0IGEgcmVkcmF3IGlzIHJlcXVpcmVkLCBlaXRoZXIgZHVlIHRvIHRoZSBpbXBsIHRyZWUg
Y2hhbmdpbmcKICAgICAvLyBvciB0aGUgc2NyZWVuIGJlaW5nIGRhbWFnZWQgYW5kIHNpbXBseSBu
ZWVkaW5nIHJlZGlzcGxheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZmZhMTQ2
OGYwYzMyOTlhN2Y2YWM5M2EyODAyYTBlNjNlM2FhZmQ2ZC4uMTBmNTZmNDM3M2UyNWRmYjIxZTA5
NTgyNDcyZmZkMTE3MTAzZGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTQ0
MSw2ICs0NDEsMTIgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQo
KQogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gMDsKIH0KIAorYm9v
bCBDQ1RocmVhZFByb3h5Ojp2aXNpYmxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNJbXBsVGhy
ZWFkKCkpOworICAgIHJldHVybiBtX2xheWVyVHJlZUhvc3RJbXBsLT52aXNpYmxlKCk7Cit9CisK
IHZvaWQgQ0NUaHJlYWRQcm94eTo6ZHJhd0xheWVyc0FuZFN3YXBPbkltcGxUaHJlYWQoKQogewog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kU3dhcE9uSW1wbFRo
cmVhZCIsIHRoaXMsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDBhNTg4YWRkNjk3
ZWVlNzAxZmQ5YjE0ZjZhZjEzMDc3ZGQ4YmZhM2EuLjI5NDQ2ODIzNDQ1MGYyN2U4Y2VhY2Y3MjNj
NzhhNThkY2VlZDM2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTc2LDYgKzc2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgp
OwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCk7
CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpOworICAgIHZpcnR1YWwg
Ym9vbCB2aXNpYmxlKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQ
cm94eShDQ0xheWVyVHJlZUhvc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAppbmRleCA0YjVl
YWM0YzM3NjUwZGQ1ZWRhNzJiY2M3OTMyNTUyZmExMjU4NDIzLi4yMWYyYjgyZTQyMjc1NjdjMDg0
ODM2M2E3MDI0ZTFjMzc5MTMxMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCkBAIC0zOSw5
ICszOSwxNyBAQCBjb25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q29tbWl0U3RhdGUgYWxs
Q29tbWl0U3RhdGVzW10gPSB7CiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9T
VEFURV9JRExFLAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJB
TUVfSU5fUFJPR1JFU1MsCiAgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFU
RV9VUERBVElOR19SRVNPVVJDRVMsCi0gICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1J
VF9TVEFURV9SRUFEWV9UT19DT01NSVQKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09N
TUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwKKyAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcKIH07CiAKKy8vIEltbWVkaWF0ZSBz
dGF0ZSBjb21iaW5hdGlvbnMKK3N0YXRpYyBjb25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
SW1tZWRpYXRlU3RhdGUgSW1tZWRpYXRlU3RhdGVOb25lID0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OklNTUVESUFURV9TVEFURV9OT05FOworc3RhdGljIGNvbnN0IENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpJbW1lZGlhdGVTdGF0ZSBJbW1lZGlhdGVTdGF0ZVZpc2libGUgPSBDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX1ZJU0lCTEU7CitzdGF0aWMgY29uc3QgQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkltbWVkaWF0ZVN0YXRlIEltbWVkaWF0ZVN0YXRlSW5zaWRl
VlN5bmMgPSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9W
U1lOQzsKK3N0YXRpYyBjb25zdCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SW1tZWRpYXRlU3Rh
dGUgSW1tZWRpYXRlU3RhdGVWaXNpYmxlSW5zaWRlVlN5bmMgPSBzdGF0aWNfY2FzdDxDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6SW1tZWRpYXRlU3RhdGU+KAorICAgIENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfVklTSUJMRSB8IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKTsKKwogLy8gRXhwb3NlcyB0aGUgcHJvdGVj
dGVkIHN0YXRlIGZpZWxkcyBvZiB0aGUgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgZm9yIHRlc3Rp
bmcKIGNsYXNzIFN0YXRlTWFjaGluZSA6IHB1YmxpYyBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSB7
CiBwdWJsaWM6CkBAIC02Nyw4ICs3NSw4IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0TmV4dEFjdGlvbkJlZ2luc0ZyYW1lSWZOZWVkZWQpCiAgICAgICAgIHN0YXRlLnNl
dE5lZWRzUmVkcmF3KGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2Up
OwogICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9O
T05FKSk7Ci0gICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X05PTkUsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFU
RV9TVEFURV9JTlNJREVfVlNZTkMpKTsKKyAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZp
c2libGUpKTsKKyAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3lu
YykpOwogICAgIH0KIAogICAgIC8vIElmIGNvbW1pdCByZXF1ZXN0ZWQsIGJlZ2luIGEgZnJhbWUK
QEAgLTc4LDEzICs4NiwxMyBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVz
dE5leHRBY3Rpb25CZWdpbnNGcmFtZUlmTmVlZGVkKQogICAgICAgICBzdGF0ZS5zZXROZWVkc1Jl
ZHJhdyhmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAg
ICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0
ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9O
RSkpOworICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGUpKTsKICAg
ICB9CiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUsIG1ha2Ugc3VyZSBuZWVkc0NvbW1pdCBhbmQg
Y29tbWl0U3RhdGUgdXBkYXRlIGNvcnJlY3RseS4KICAgICB7CiAgICAgICAgIFN0YXRlTWFjaGlu
ZSBzdGF0ZTsKLSAgICAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRSk7CisgICAgICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIEltbWVkaWF0ZVN0YXRlVmlz
aWJsZSk7CiAgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlU
X1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwogICAgIH0KQEAgLTEwMiwyMiArMTEw
LDIyIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0TmV4dEFjdGlvbkRy
YXdzT25WU3luYykKICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZSB2c3luYz1mYWxzZS4KICAgICAgICAgc3RhdGUuc2V0
TmVlZHNDb21taXQoZmFsc2UpOwogICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2Vz
UGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OklNTUVESUFURV9TVEFURV9OT05FKSk7CisgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVW
aXNpYmxlKSk7CiAKICAgICAgICAgLy8gQ2FzZSAyOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVN
b3JlUmVzb3VyY2VzUGVuZGluZz10cnVlIHZzeW5jPWZhbHNlLgogICAgICAgICBzdGF0ZS5zZXRO
ZWVkc0NvbW1pdChmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJ
TU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlz
aWJsZSkpOwogCiAgICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZz1mYWxzZSB2c3luYz1mYWxzZS4KICAgICAgICAgc3RhdGUuc2V0TmVl
ZHNDb21taXQodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1N
RURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2li
bGUpKTsKIAogICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc9dHJ1ZSB2c3luYz1mYWxzZS4KICAgICAgICAgc3RhdGUuc2V0TmVlZHND
b21taXQodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5n
KHRydWUpOwotICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElB
VEVfU1RBVEVfTk9ORSkpOworICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkp
OwogICAgIH0KIAogICAgIC8vIFdoZW4gb24gdnN5bmMsIHlvdSBzaG91bGQgYWx3YXlzIGRyYXcu
IEV4cGVjdCBpZiB5b3UncmUgcmVhZHkgdG8gY29tbWl0LCBpbiB3aGljaCBjYXNlIGNvbW1pdC4K
QEAgLTEzNCwyMiArMTQyLDUzIEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0TmV4dEFjdGlvbkRyYXdzT25WU3luYykKICAgICAgICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1p
dD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZSB2c3luYz10cnVlLgogICAg
ICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0
ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
QWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElB
VEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlv
biwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwog
CiAgICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9dHJ1ZSB2c3luYz10cnVlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChm
YWxzZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKHRydWUp
OwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0
ZVN0YXRlVmlzaWJsZUluc2lkZVZTeW5jKSk7CiAKICAgICAgICAgLy8gQ2FzZSAzOiBuZWVkc0Nv
bW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlIHZzeW5jPXRydWUuCiAg
ICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRVcGRh
dGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJ
QVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rp
b24sIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxlSW5zaWRlVlN5bmMpKTsK
IAogICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9dHJ1ZSB2c3luYz10cnVlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0
cnVlKTsKICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcodHJ1ZSk7
Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbihDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworICAg
ICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRl
U3RhdGVWaXNpYmxlSW5zaWRlVlN5bmMpKTsKKyAgICB9Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9Db21taXRTdGF0ZXNSZWRyYXdXaGVuSW52aXNpYmxlKQor
eworICAgIC8vIElmIG5vdCB2aXNpYmxlLCBuZXZlciByZWRyYXcuCisgICAgc2l6ZV90IG51bUNv
bW1pdFN0YXRlcyA9IHNpemVvZihhbGxDb21taXRTdGF0ZXMpIC8gc2l6ZW9mKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1Db21taXRTdGF0ZXM7ICsraSkgeworICAgICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAg
ICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7CisgICAgICAgIHN0
YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworCisgICAgICAgIC8vIENhc2UgMTogbmVlZHNDb21t
aXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UgdnN5bmM9ZmFsc2UuCisg
ICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKKyAgICAgICAgc3RhdGUuc2V0VXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICBFWFBFQ1RfTkUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0
ZVN0YXRlTm9uZSkpOworCisgICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmc9dHJ1ZSB2c3luYz1mYWxzZS4KKyAgICAgICAgc3RhdGUu
c2V0TmVlZHNDb21taXQoZmFsc2UpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3Vy
Y2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZU5vbmUpKTsK
KworICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNl
c1BlbmRpbmc9ZmFsc2UgdnN5bmM9ZmFsc2UuCisgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0
KHRydWUpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxz
ZSk7CisgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RS
QVcsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVOb25lKSk7CisKKyAgICAgICAgLy8g
Q2FzZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUg
dnN5bmM9ZmFsc2UuCisgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgICAg
ICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgRVhQ
RUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFj
dGlvbihJbW1lZGlhdGVTdGF0ZU5vbmUpKTsKICAgICB9CiB9CiAKQEAgLTE1OSwxNyArMTk4LDE3
IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJh
d19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAgc3Rh
dGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElB
VEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0
aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4
dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogCiAgICAgLy8gQmVn
aW4gYW4gdXBkYXRlLgotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMp
KTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgSW1tZWRpYXRlU3RhdGVWaXNpYmxlSW5zaWRl
VlN5bmMpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxlKSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlv
bihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogCiAgICAgLy8gRW5kIHVwZGF0
ZSB3aXRoIG5vIG1vcmUgdXBkYXRlcyBwZW5kaW5nLgogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9y
ZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0
ZVN0YXRlVmlzaWJsZSkpOwogfQogCiBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdFVwZGF0ZXNfTm9SZWRyYXdfVHdvUm91bmRzT2ZVcGRhdGVzKQpAQCAtMTc4LDI0ICsyMTcs
MjQgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX05vUmVk
cmF3X1R3b1JvdW5kc09mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRDb21taXRTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUyk7CiAgICAg
c3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNv
dXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24o
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7Ci0gICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1F
RElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogCi0gICAgLy8g
QmVnaW4gYW4gdWRwYXRlLgotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9u
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZ
TkMpKTsKKyAgICAvLyBCZWdpbiBhbiB1cGRhdGUuCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMs
IEltbWVkaWF0ZVN0YXRlVmlzaWJsZUluc2lkZVZTeW5jKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0
ZVN0YXRlVmlzaWJsZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxlSW5zaWRl
VlN5bmMpKTsKIAogICAgIC8vIEFjayB0aGUgdXBkYXRlIHdpdGggbW9yZSBwZW5kaW5nLgogICAg
IHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKHRydWUpOwotICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JF
U09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJ
QVRFX1NUQVRFX05PTkUpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVf
TU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxlKSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBE
QVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJs
ZUluc2lkZVZTeW5jKSk7CiAKLSAgICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZSwgZW5kIGl0IHdp
dGggbm9uZSBlcGVuZGluZy4KLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgLy8gQmVn
aW4gYW5vdGhlciB1cGRhdGUsIGVuZCBpdCB3aXRoIG5vbmUgcGVuZGluZy4KKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUywgSW1tZWRpYXRlU3RhdGVWaXNpYmxlSW5zaWRlVlN5bmMpOwogICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rp
b24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7Ci0gICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5u
ZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURF
X1ZTWU5DKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Q09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4
dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogfQogCiBURVNUKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFVwZGF0ZXNfV2l0aFJlZHJhd19PbmVSb3Vu
ZE9mVXBkYXRlcykKQEAgLTIwNCwyNiArMjQzLDI2IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVkcmF3X09uZVJvdW5kT2ZVcGRhdGVzKQogICAg
IHN0YXRlLnNldENvbW1pdFN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTKTsKICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyh0cnVlKTsK
ICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1F
RElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihJ
bW1lZGlhdGVTdGF0ZVZpc2libGUpKTsKIAogICAgIC8vIEJlZ2luIGFuIHVwZGF0ZS4KLSAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTLCBJbW1lZGlhdGVTdGF0ZVZpc2libGUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVW
aXNpYmxlSW5zaWRlVlN5bmMpKTsKIAogICAgIC8vIERyYXcuCi0gICAgc3RhdGUudXBkYXRlU3Rh
dGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKLSAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7Cisg
ICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFX
LCBJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYyk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlh
dGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogCiAgICAgLy8gRmluaXNoIHVwZGF0ZSwgbGV2
YWUgbW9yZSByZXNvdXJjZXMgcGVuZGluZy4KICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNv
dXJjZXNDb21wbGV0ZSh0cnVlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24o
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7Ci0gICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVf
UkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1F
RElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0
QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUu
bmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogCiAgICAgLy8g
QmVnaW4gYW5vdGhlciB1cGRhdGUuIEZpbmlzaCBpdCBpbW1lZGlhdGVseS4KLSAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9N
T1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIEltbWVkaWF0ZVN0YXRl
VmlzaWJsZUluc2lkZVZTeW5jKTsKICAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJ
TU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbihJbW1l
ZGlhdGVTdGF0ZVZpc2libGUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxl
SW5zaWRlVlN5bmMpKTsKIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKQEAgLTIzMiw4ICsyNzEsOCBAQCBURVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNldE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgot
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
LCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RB
VEVfTk9ORSkpOwotICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRB
Y3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxlKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoc3Rh
dGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGUpLCBJbW1lZGlhdGVTdGF0ZVZpc2li
bGUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRF
X0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKIAogICAgIC8vIE5vdywg
d2hpbGUgdGhlIGZyYW1lIGlzIGluIHByb2dyZXNzLCBzZXQgYW5vdGhlciBjb21taXQuCkBAIC0y
NDMsMTggKzI4MiwyMiBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdFNl
dE5lZWRzQ29tbWl0SXNOb3RMb3N0KQogICAgIC8vIExldCB0aGUgZnJhbWUgZmluaXNoLgogICAg
IHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywgc3RhdGUuY29tbWl0
U3RhdGUoKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgIHN0YXRlLnVwZGF0ZVN0
YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVf
U1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlh
dGVTdGF0ZVZpc2libGUpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgSW1tZWRpYXRlU3Rh
dGVWaXNpYmxlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOwogICAgIHN0
YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKICAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQs
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKLSAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7Ci0gICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfSURMRSwgc3Rh
dGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYykpOwogCi0g
ICAgLy8gVmVyaWZ5IHRoYXQgYW5vdGhlciBjb21taXQgd2lsbCBiZWdpbi4KLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4
dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsK
KyAgICAvLyBDb21taXQgYW5kIG1ha2Ugc3VyZSB3ZSBkcmF3IG9uIG5leHQgdnN5bmMKKyAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
SW1tZWRpYXRlU3RhdGVWaXNpYmxlSW5zaWRlVlN5bmMpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRl
U3RhdGVWaXNpYmxlSW5zaWRlVlN5bmMpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0RSQVcsIEltbWVkaWF0ZVN0YXRlVmlzaWJsZUluc2lkZVZTeW5jKTsKKworICAg
IC8vIFZlcmlmeSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVnaW4KKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFj
dGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGUpKTsKIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCkBAIC0yNjMsNDkgKzMwNiwxMzQgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3ljbGUpCiAKICAgICAvLyBTdGFy
dCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsK
LSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFN
RSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NU
QVRFX05PTkUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGUpKTsK
IAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBJbW1lZGlh
dGVTdGF0ZVZpc2libGUpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQoKSk7Ci0gICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKElt
bWVkaWF0ZVN0YXRlVmlzaWJsZSkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBm
cmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKICAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNP
VVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4
dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxl
KSk7CiAKICAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmlu
aXNoZWQKLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJD
RVMsIEltbWVkaWF0ZVN0YXRlVmlzaWJsZSk7CiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVz
b3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBz
dGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVf
Tk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NP
TU1JVCwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGUpKTsKIAogICAgIC8v
IENvbW1pdC4KLSAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0NPTU1JVCk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9DT01NSVQsIEltbWVkaWF0ZVN0YXRlVmlzaWJsZSk7CiAgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfSURMRSwgc3RhdGUuY29t
bWl0U3RhdGUoKSk7CiAgICAgRVhQRUNUX1RSVUUoc3RhdGUubmVlZHNSZWRyYXcoKSk7CiAKICAg
ICAvLyBFeHBlY3QgdG8gZG8gbm90aGluZyB1bnRpbCB2c3luYy4KLSAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24o
SW1tZWRpYXRlU3RhdGVWaXNpYmxlKSk7CiAKICAgICAvLyBBdCB2c3luYywgZHJhdy4KLSAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0
QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZT
WU5DKSk7Ci0gICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZUluc2lkZVZTeW5j
KSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9EUkFXLCBJbW1lZGlhdGVTdGF0ZVZpc2libGVJbnNpZGVWU3luYyk7CiAKICAgICAvLyBTaG91
bGQgYmUgc3luY2hyb25pemVkLCBubyBkcmF3IG5lZWRlZCwgbm8gYWN0aW9uIG5lZWRlZC4KICAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNSZWRyYXco
KSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRF
X05PTkUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9O
T05FLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOwogfQogCiBURVNU
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhDb21taXRSZXF1
ZXN0SW5iZXR3ZWVuKQogeworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKworICAgIC8vIFN0YXJ0
IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1F
LCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOworCisgICAgLy8gQmVn
aW4gdGhlIGZyYW1lLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIEltbWVkaWF0ZVN0YXRlVmlzaWJsZSk7CisgICAgRVhQ
RUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJP
R1JFU1MsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVk
c0NvbW1pdCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRlVmlzaWJsZSkpOworCisgICAg
Ly8gUmVxdWVzdCBhbm90aGVyIGNvbW1pdCB3aGlsZSB0aGUgY29tbWl0IGlzIGluIGZsaWdodC4K
KyAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0
YXRlVmlzaWJsZSkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSBmcmFtZSBmaW5p
c2hlZC4KKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1RfRVEoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMsIHN0
YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihJ
bW1lZGlhdGVTdGF0ZVZpc2libGUpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUg
dXBkYXRlIGJlZ2FuIGFuZCBmaW5pc2hlZAorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBJbW1l
ZGlhdGVTdGF0ZVZpc2libGUpOworICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0Nv
bXBsZXRlKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNP
TU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4
dEFjdGlvbihJbW1lZGlhdGVTdGF0ZVZpc2libGUpKTsKKworICAgIC8vIENvbW1pdC4KKyAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
SW1tZWRpYXRlU3RhdGVWaXNpYmxlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXLCBzdGF0ZS5jb21taXRT
dGF0ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS5uZWVkc1JlZHJhdygpKTsKKworICAgIC8v
IEV4cGVjdCB0byBkbyBub3RoaW5nIHVudGlsIHZzeW5jLgorICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRl
U3RhdGVWaXNpYmxlKSk7CisKKyAgICAvLyBBdCB2c3luYywgZHJhdy4KKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKElt
bWVkaWF0ZVN0YXRlVmlzaWJsZUluc2lkZVZTeW5jKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBJbW1lZGlhdGVTdGF0ZVZpc2li
bGVJbnNpZGVWU3luYyk7CisKKyAgICAvLyBTaG91bGQgYmUgc3luY2hyb25pemVkLCBubyBkcmF3
IG5lZWRlZCwgbm8gYWN0aW9uIG5lZWRlZC4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9JRExFLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNSZWRyYXcoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oSW1t
ZWRpYXRlU3RhdGVWaXNpYmxlKSk7Cit9CisKK1RFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVU
ZXN0LCBUZXN0UmVxdWVzdENvbW1pdEludmlzaWJsZSkKK3sKKyAgICBTdGF0ZU1hY2hpbmUgc3Rh
dGU7CisgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbihJbW1lZGlh
dGVTdGF0ZU5vbmUpKTsKIH0KIAotVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRl
c3RGdWxsQ3ljbGVXaXRoUmVkcmF3SW5iZXR3ZWVuKQorVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZVRlc3QsIFRlc3RHb2VzSW52aXNpYmxlTWlkQ29tbWl0KQogeworICAgIFN0YXRlTWFjaGlu
ZSBzdGF0ZTsKKworICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgorICAgIHN0YXRl
LnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKEltbWVkaWF0ZVN0YXRl
VmlzaWJsZSkpOworCisgICAgLy8gQmVnaW4gdGhlIGZyYW1lIHdoaWxlIHZpc2libGUuCisgICAg
c3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9G
UkFNRSwgSW1tZWRpYXRlU3RhdGVWaXNpYmxlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUuY29tbWl0
U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRB
Y3Rpb24oSW1tZWRpYXRlU3RhdGVWaXNpYmxlKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVs
ZXIgdGhlIGZyYW1lIGZpbmlzaGVkLCBidXQgZnJvbSBoZXJlIG9uIGluLCB2aXNpYmlsaXR5IHdp
bGwgYmUgZmFsc2UuCisgICAgc3RhdGUuYmVnaW5GcmFtZUNvbXBsZXRlKCk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VS
Q0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRB
Y3Rpb24oSW1tZWRpYXRlU3RhdGVOb25lKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIg
dGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
SW1tZWRpYXRlU3RhdGVOb25lKTsKKyAgICBzdGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXND
b21wbGV0ZShmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5l
eHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVOb25lKSk7CisKKyAgICAvLyBDb21taXQgaW4gaW52aXNp
YmxlIHN0YXRlIHNob3VsZCBsZWF2ZSB1czoKKyAgICAvLyAtIENPTU1JVF9TVEFURV9XQUlUSU5H
X0ZPUl9GSVJTVF9EUkFXCisgICAgLy8gLSBXYWl0aW5nIGZvciByZWRyYXcuCisgICAgLy8gLSBO
byBjb21taXQgbmVlZGVkCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9DT01NSVQsIEltbWVkaWF0ZVN0YXRlTm9uZSk7CisgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1Rf
RFJBVywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUubmVlZHNS
ZWRyYXcoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOworCisgICAg
Ly8gRXhwZWN0IHRvIGRvIG5vdGhpbmcsIGJvdGggaW4gYW5kIG91dCBvZiB2c3luYy4KKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0
QWN0aW9uKEltbWVkaWF0ZVN0YXRlTm9uZSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oSW1tZWRpYXRlU3RhdGVJ
bnNpZGVWU3luYykpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDU2NoZWR1bGVyVGVzdC5jcHAKaW5kZXggODg2Y2I5MTM4MjEwNmU1ZWFlMDg5ZWMzYTU4MzQ2
YzMxYjBkOTE1ZC4uMDA1MjExZThiM2YxNzIzMGFmMTYwMmI1NTc4Njg5NDJiYjM3YmYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0LmNwcApA
QCAtNDAsMjIgKzQwLDI5IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBGYWtlQ0NTY2hlZHVsZXJDbGll
bnQgOiBwdWJsaWMgQ0NTY2hlZHVsZXJDbGllbnQgewogcHVibGljOgogICAgIEZha2VDQ1NjaGVk
dWxlckNsaWVudCgpIHsgcmVzZXQoKTsgfQotICAgIHZvaWQgcmVzZXQoKSB7IG1fYWN0aW9ucy5j
bGVhcigpOyBtX2hhc01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBmYWxzZTsgfQorICAgIHZvaWQgcmVz
ZXQoKQorICAgIHsKKyAgICAgICAgbV9hY3Rpb25zLmNsZWFyKCk7CisgICAgICAgIG1faGFzTW9y
ZVJlc291cmNlVXBkYXRlcyA9IGZhbHNlOworICAgICAgICBtX3Zpc2libGUgPSB0cnVlOworICAg
IH0KIAogICAgIHZvaWQgc2V0SGFzTW9yZVJlc291cmNlVXBkYXRlcyhib29sIGIpIHsgbV9oYXNN
b3JlUmVzb3VyY2VVcGRhdGVzID0gYjsgfQorICAgIHZvaWQgc2V0VmlzaWJsZShib29sIGIpIHsg
bV92aXNpYmxlID0gYjsgfQogCiAgICAgaW50IG51bUFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KG1fYWN0aW9ucy5zaXplKCkpOyB9CiAgICAgY29uc3QgY2hhciogYWN0
aW9uKGludCBpKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbnNbaV07IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNb3JlUmVz
b3VyY2VVcGRhdGVzOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQmVnaW5G
cmFtZSgpIHsgbV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwKCkgeyBtX2Fj
dGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCIpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKSB7IG1fYWN0aW9u
cy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25Db21taXQoKSB7IG1fYWN0aW9ucy5wdXNoX2Jh
Y2soInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIpOyB9CisgICAgdmlydHVhbCBib29sIHZpc2libGUo
KSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KIAogcHJvdGVjdGVkOgogICAgIGJvb2wgbV9o
YXNNb3JlUmVzb3VyY2VVcGRhdGVzOworICAgIGJvb2wgbV92aXNpYmxlOwogICAgIHN0ZDo6dmVj
dG9yPGNvbnN0IGNoYXIqPiBtX2FjdGlvbnM7CiB9OwogCkBAIC0xMTAsMTYgKzExNywxNiBAQCBU
RVNUKENDU2NoZWR1bGVyVGVzdCwgUmVxdWVzdENvbW1pdEFmdGVyQmVnaW5GcmFtZSkKICAgICAv
LyBuZWVkZWQsIGJlZ2luRnJhbWVDb21wbGV0ZSBzaG91bGQgdXBkYXRlTW9yZVJlc291cmNlcywg
dGhlbiBjb21taXQsIHRoZW4KICAgICAvLyBiZWdpbiBhbm90aGVyIGZyYW1lLgogICAgIHNjaGVk
dWxlci0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7Ci0gICAgRVhQRUNUX0VRKDMsIGNsaWVudC5udW1B
Y3Rpb25zKCkpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKICAgICBF
WFBFQ1RfRVEoInNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCBjbGllbnQuYWN0
aW9uKDApKTsKICAgICBFWFBFQ1RfRVEoInNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIGNsaWVudC5h
Y3Rpb24oMSkpOwotICAgIEVYUEVDVF9FUSgic2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSIsIGNs
aWVudC5hY3Rpb24oMikpOwogICAgIGNsaWVudC5yZXNldCgpOwogCiAgICAgLy8gVGljayBzaG91
bGQgZHJhdyBidXQgdGhlbiBiZWdpbiBhbm90aGVyIGZyYW1lLgogICAgIHRpbWVTb3VyY2UtPnRp
Y2soKTsKLSAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CisgICAgRVhQRUNU
X0VRKDIsIGNsaWVudC5udW1BY3Rpb25zKCkpOwogICAgIEVYUEVDVF9FUSgic2NoZWR1bGVkQWN0
aW9uRHJhd0FuZFN3YXAiLCBjbGllbnQuYWN0aW9uKDApKTsKKyAgICBFWFBFQ1RfRVEoInNjaGVk
dWxlZEFjdGlvbkJlZ2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDEpKTsKICAgICBjbGllbnQucmVz
ZXQoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113375</attachid>
            <date>2011-11-02 13:59:00 -0700</date>
            <delta_ts>2011-11-02 14:11:29 -0700</delta_ts>
            <desc>Without ImmediateState</desc>
            <filename>bug-71267-20111102135859.patch</filename>
            <type>text/plain</type>
            <size>43179</size>
            <attacher name="Nat Duca">nduca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZGI5NDQ2YmI3YmU2ZmVi
ZmUxZDhiNWY3ZGExMWNjNTRlNzVlNTMzLi40NGQ3OWEzM2IwNzAxYmUzNDUyZDNhMTJiN2Y0ZjAy
NGUzOTY2OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMTAtMzEgIE5hdCBE
dWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2xvdyBkb3du
IGNvbW1pdCBhbmQgZHJhdyByYXRlIGJhc2VkIG9uIHZpc2liaWxpdHkgYW5kIGRyYXcgY29tcGxl
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEy
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp2aXNpYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjp2aXNpYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1NjaGVkdWxlcjo6YmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NjaGVkdWxlcjo6
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dmlzaWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTExLTAyICBB
bmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4
IHRoZSBidWlsZCB3aXRoIE5PX0xJU1RCT1hfUkVOREVSSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGYwZmJmYWZlMTA5YzcwMDMyYWYwZTJjYmU2ZDViZDcyMjMxNzRhYmIuLjljMzM4
N2JjODM4ZDY0MzI3YzQxMzVhMWM1NmNiZmExMDhhODY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAtMzEgIE5hdCBEdWNhICA8bmR1Y2FAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU2xvdyBkb3duIGNvbW1pdCBhbmQgZHJh
dyByYXRlIGJhc2VkIG9uIHZpc2liaWxpdHkgYW5kIGRyYXcgY29tcGxldGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzEyNjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAg
KiB0ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VD
Q1NjaGVkdWxlckNsaWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VDQ1Nj
aGVkdWxlckNsaWVudDo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUND
U2NoZWR1bGVyQ2xpZW50Ojp2aXNpYmxlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUKToK
KwogMjAxMS0xMS0wMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgZml4IGZvciBidWlsZCBmYWlsdXJlIG9uIGNocm9taXVtIHNoYXJl
ZCBsaW51eCBjYXVzZWQgYnkgcjk5MDIwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRl
eCAwNGY3NmRiZjc5NGVhODlmMjZkYzJkNDVjYjFlYjZjMWQ5ZjE4MWQ1Li4yZTJkOGZjNjlhZjA5
MjZmYWIyZTVmZDAxMDRmNTYxNDM3NmJiNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aApAQCAtMTYxLDYgKzE2MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKKwogICAg
IHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAogICAgIHZvaWQgdXBkYXRl
TGF5ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggMmFmZmVh
MjZhMWQ3ZmFlMjAyY2JmNjBiZGUxMTM0N2FjZTY5ZDJjZS4uNWE2OGYwZmUzMDg0Y2U4ZDFmNWUy
YTcwYzcwMWFmYTdjNzUwMTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgQ0NMYXllckltcGwqIHJvb3RMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVySW1wbC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Um9v
dExheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKIAorICAgIGJvb2wgdmlzaWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAg
ICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKSB7IG1faGF2ZVdoZWVsRXZlbnRIYW5kbGVycyA9IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnM7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuY3BwCmluZGV4IDUwZWUzYWIxNTFlZGJjZTdhZTNjYWM4
M2IyZjc0ODEwNTE5OTgwNTguLjJhMzk3YjY1N2FhZjk2MTg5NTM5M2ExMmI3ZjMxOGIzMmY0M2E0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5jcHAKQEAgLTU1LDIwICs1NSwyMCBAQCB2b2lkIEND
U2NoZWR1bGVyOjpzZXROZWVkc0FuaW1hdGUoKQogdm9pZCBDQ1NjaGVkdWxlcjo6c2V0TmVlZHND
b21taXQoKQogewogICAgIG1fc3RhdGVNYWNoaW5lLnNldE5lZWRzQ29tbWl0KCk7Ci0gICAgcHJv
Y2Vzc1NjaGVkdWxlZEFjdGlvbnMoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9T
VEFURV9OT05FKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOwogfQogCiB2b2lkIEND
U2NoZWR1bGVyOjpzZXROZWVkc1JlZHJhdygpCiB7CiAgICAgbV9zdGF0ZU1hY2hpbmUuc2V0TmVl
ZHNSZWRyYXcoKTsKLSAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyhDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rp
b25zKCk7CiB9CiAKIHZvaWQgQ0NTY2hlZHVsZXI6OmJlZ2luRnJhbWVDb21wbGV0ZSgpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVyOjpiZWdpbkZyYW1lQ29tcGxldGUiLCB0aGlzLCAw
KTsKICAgICBtX3N0YXRlTWFjaGluZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKLSAgICBwcm9jZXNz
U2NoZWR1bGVkQWN0aW9ucyhDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRF
X05PTkUpOworICAgIHByb2Nlc3NTY2hlZHVsZWRBY3Rpb25zKCk7CiB9CiAKIHZvaWQgQ0NTY2hl
ZHVsZXI6OmRpZFN3YXBCdWZmZXJzQ29tcGxldGUoKQpAQCAtODksMTkgKzg5LDI1IEBAIHZvaWQg
Q0NTY2hlZHVsZXI6OmJlZ2luRnJhbWUoKQogICAgICAgICBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQ
ZW5kaW5nID0gZmFsc2U7CiAgICAgICAgIG1fc3RhdGVNYWNoaW5lLmJlZ2luVXBkYXRlTW9yZVJl
c291cmNlc0NvbXBsZXRlKG1fY2xpZW50LT5oYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkpOwogICAg
IH0KLSAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyhDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQyk7CisgICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1
bGVyOjpiZWdpbkZyYW1lIiwgdGhpcywgMCk7CisKKyAgICBtX3N0YXRlTWFjaGluZS5zZXRJbnNp
ZGVWU3luYyh0cnVlKTsKKyAgICBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucygpOworICAgIG1fc3Rh
dGVNYWNoaW5lLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKIH0KIAotdm9pZCBDQ1NjaGVkdWxlcjo6
cHJvY2Vzc1NjaGVkdWxlZEFjdGlvbnMoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkltbWVkaWF0
ZVN0YXRlIGltbWVkaWF0ZVN0YXRlKQordm9pZCBDQ1NjaGVkdWxlcjo6cHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKQogeworICAgIC8vIEFkanVzdCB0aGUgc3RhdGUgbWFjaGluZSdzIHZpc2JpbGl0
eSBzdGF0ZSB0byB0aGUgcHJveHkncyB2aXNpYmlsaXR5IHN0YXRlCisgICAgbV9zdGF0ZU1hY2hp
bmUuc2V0VmlzaWJsZShtX2NsaWVudC0+dmlzaWJsZSgpKTsKKwogICAgIC8vIEVhcmx5IG91dCBz
byB3ZSBkb24ndCBzcGFtIFRSQUNFX0VWRU5UUyB3aXRoIHVzZWxlc3MgcHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMuCi0gICAgaWYgKG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oaW1tZWRpYXRlU3Rh
dGUpID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSkKKyAgICBpZiAobV9z
dGF0ZU1hY2hpbmUubmV4dEFjdGlvbigpID09IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJ
T05fTk9ORSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVFJBQ0VfRVZFTlQoIkNDU2NoZWR1bGVy
Ojpwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyIsIHRoaXMsIDApOwogICAgIENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBY3Rpb24gYWN0aW9uOwogICAgIGRvIHsKLSAgICAgICAgYWN0aW9uID0gbV9z
dGF0ZU1hY2hpbmUubmV4dEFjdGlvbihpbW1lZGlhdGVTdGF0ZSk7CisgICAgICAgIGFjdGlvbiA9
IG1fc3RhdGVNYWNoaW5lLm5leHRBY3Rpb24oKTsKICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsK
ICAgICAgICAgY2FzZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkU6CiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXIuaAppbmRleCAzODRhNWU1OGM3MTY2NTZh
NGM5MDllMjkyYTZhM2ZkYzZiNDliNTUwLi4yODc4ZThlNWYzODk1NDI3MTIwNDEwYmEzMjUxYTI0
NzdiZDUyMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3Mg
Q0NUaHJlYWQ7CiBjbGFzcyBDQ1NjaGVkdWxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHZpc2libGUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0
aW9uQmVnaW5GcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uRHJh
d0FuZFN3YXAoKSA9IDA7CkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Q0NTY2hlZHVsZXIoQ0NTY2hlZHVsZXJDbGllbnQqLCBQYXNzT3duUHRyPENDRnJhbWVSYXRlQ29u
dHJvbGxlcj4pOwogCi0gICAgdm9pZCBwcm9jZXNzU2NoZWR1bGVkQWN0aW9ucyhDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6SW1tZWRpYXRlU3RhdGUpOworICAgIHZvaWQgcHJvY2Vzc1NjaGVkdWxl
ZEFjdGlvbnMoKTsKIAogICAgIENDU2NoZWR1bGVyQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25Q
dHI8Q0NGcmFtZVJhdGVDb250cm9sbGVyPiBtX2ZyYW1lUmF0ZUNvbnRyb2xsZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVk
dWxlclN0YXRlTWFjaGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKaW5kZXggNDI4MWJkZGVkMTEw
ZjFhYjRlMjAwMTY3Y2UxNGI4ZDdjNjFmNzdiZC4uNDkwMWI2NDVhYzE5NTE1NzhlN2ZkOTVkMzE3
OTk1OGFiYTc1ZWVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lLmNwcApAQCAtMzIsMjYgKzMyLDI3IEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZSgpCiAgICAgOiBtX2NvbW1pdFN0YXRlKENPTU1JVF9TVEFURV9J
RExFKQogICAgICwgbV9uZWVkc1JlZHJhdyhmYWxzZSkKICAgICAsIG1fbmVlZHNDb21taXQoZmFs
c2UpCi0gICAgLCBtX3VwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKSB7IH0KKyAgICAs
IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpCisgICAgLCBtX2luc2lkZVZTeW5j
KGZhbHNlKQorICAgICwgbV92aXNpYmxlKGZhbHNlKSB7IH0KIAotQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFjdGlvbiBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6bmV4dEFjdGlvbihJbW1lZGlh
dGVTdGF0ZSBpbW1lZGlhdGVTdGF0ZSkgY29uc3QKK0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Y3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6Om5leHRBY3Rpb24oKSBjb25zdAogewotICAg
IGJvb2wgaW5zaWRlVlN5bmNUaWNrID0gaW1tZWRpYXRlU3RhdGUgJiBJTU1FRElBVEVfU1RBVEVf
SU5TSURFX1ZTWU5DOwogICAgIHN3aXRjaCAobV9jb21taXRTdGF0ZSkgewogICAgIGNhc2UgQ09N
TUlUX1NUQVRFX0lETEU6Ci0gICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIGluc2lkZVZTeW5j
VGljaykKKyAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zp
c2libGUpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RSQVc7Ci0gICAgICAgIGlmIChtX25l
ZWRzQ29tbWl0KQorICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCAmJiBtX3Zpc2libGUpCiAgICAg
ICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwogICAgICAgICByZXR1cm4gQUNUSU9O
X05PTkU7CiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUzoKLSAgICAg
ICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYgaW5zaWRlVlN5bmNUaWNrKQorICAgICAgICBpZiAobV9u
ZWVkc1JlZHJhdyAmJiBtX2luc2lkZVZTeW5jICYmIG1fdmlzaWJsZSkKICAgICAgICAgICAgIHJl
dHVybiBBQ1RJT05fRFJBVzsKICAgICAgICAgcmV0dXJuIEFDVElPTl9OT05FOwogCiAgICAgY2Fz
ZSBDT01NSVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTOgotICAgICAgICBpZiAobV9uZWVkc1Jl
ZHJhdyAmJiBpbnNpZGVWU3luY1RpY2spCisgICAgICAgIGlmIChtX25lZWRzUmVkcmF3ICYmIG1f
aW5zaWRlVlN5bmMgJiYgbV92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuIEFDVElPTl9EUkFX
OwogICAgICAgICBpZiAoIW1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gQUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUzsKQEAgLTU5LDYgKzYw
LDExIEBAIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBY3Rpb24gQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6Om5leHRBY3Rpb24oSW1tZWRpYXRlU3RhCiAKICAgICBjYXNlIENPTU1JVF9TVEFURV9S
RUFEWV9UT19DT01NSVQ6CiAgICAgICAgIHJldHVybiBBQ1RJT05fQ09NTUlUOworCisgICAgY2Fz
ZSBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVzoKKyAgICAgICAgaWYgKG1fbmVl
ZHNSZWRyYXcgJiYgbV9pbnNpZGVWU3luYyAmJiBtX3Zpc2libGUpCisgICAgICAgICAgICByZXR1
cm4gQUNUSU9OX0RSQVc7CisgICAgICAgIHJldHVybiBBQ1RJT05fTk9ORTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEFDVElPTl9OT05FOwpAQCAtNzEsNiAr
NzcsNyBAQCB2b2lkIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjp1cGRhdGVTdGF0ZShBY3Rpb24g
YWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIEFDVElPTl9CRUdJTl9GUkFNRToK
KyAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7CiAgICAgICAgIG1fY29tbWl0U3RhdGUgPSBDT01N
SVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CiAgICAgICAgIG1fbmVlZHNDb21taXQgPSBmYWxz
ZTsKICAgICAgICAgcmV0dXJuOwpAQCAtODEsMTYgKzg4LDMzIEBAIHZvaWQgQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OnVwZGF0ZVN0YXRlKEFjdGlvbiBhY3Rpb24pCiAgICAgICAgIHJldHVybjsK
IAogICAgIGNhc2UgQUNUSU9OX0NPTU1JVDoKLSAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1J
VF9TVEFURV9JRExFOworICAgICAgICBpZiAobV9uZWVkc0NvbW1pdCB8fCAhbV92aXNpYmxlKQor
ICAgICAgICAgICAgbV9jb21taXRTdGF0ZSA9IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJT
VF9EUkFXOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlU
X1NUQVRFX0lETEU7CiAgICAgICAgIG1fbmVlZHNSZWRyYXcgPSB0cnVlOwogICAgICAgICByZXR1
cm47CiAKICAgICBjYXNlIEFDVElPTl9EUkFXOgogICAgICAgICBtX25lZWRzUmVkcmF3ID0gZmFs
c2U7CisgICAgICAgIGlmIChtX2NvbW1pdFN0YXRlID09IENPTU1JVF9TVEFURV9XQUlUSU5HX0ZP
Ul9GSVJTVF9EUkFXKSB7CisgICAgICAgICAgICBBU1NFUlQobV9uZWVkc0NvbW1pdCk7CisgICAg
ICAgICAgICBtX2NvbW1pdFN0YXRlID0gQ09NTUlUX1NUQVRFX0lETEU7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAordm9pZCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
c2V0SW5zaWRlVlN5bmMoYm9vbCBpbnNpZGVWU3luYykKK3sKKyAgICBtX2luc2lkZVZTeW5jID0g
aW5zaWRlVlN5bmM7Cit9CisKK3ZvaWQgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldFZpc2li
bGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1fdmlzaWJsZSA9IHZpc2libGU7Cit9CisKIHZvaWQg
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OnNldE5lZWRzUmVkcmF3KCkKIHsKICAgICBtX25lZWRz
UmVkcmF3ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZS5o
CmluZGV4IDNmNDFlNjAzODBmYjA2MTI4ZTAwYWQ0ZGQ3OTliMDljOTA1MjQ5MTAuLjcwOGJiZmRm
ZDQ2ZTZlMjM0NjU3NmJlODEwMzQwZDkzMTgwMDliZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmUuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLS8vIFRoZSBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSBkZWNpZGVzIGhvdyB0byBj
b29yZGluYXRlcyBtYWluIHRocmVhZCBhY3Rpdml0ZXMKKy8vIFRoZSBDQ1NjaGVkIGRlY2lkZXMg
aG93IHRvIGNvb3JkaW5hdGVzIG1haW4gdGhyZWFkIGFjdGl2aXRlcwogLy8gbGlrZSBwYWludGlu
Zy9ydW5uaW5nIGphdmFzY3JpcHQgd2l0aCByZW5kZXJpbmcgYW5kIGlucHV0IGFjdGl2aXRpZXMg
b24gdGhlCiAvLyBpbXBsIHRocmVhZC4KIC8vCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQ09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgICAgICBDT01NSVRfU1RB
VEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAogICAgICAgICBDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09N
TUlULAorICAgICAgICBDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywKICAgICB9
OwogCiAgICAgYm9vbCBjb21taXRQZW5kaW5nKCkgY29uc3QKQEAgLTY0LDEzICs2NSwxNSBAQCBw
dWJsaWM6CiAgICAgICAgIEFDVElPTl9DT01NSVQsCiAgICAgICAgIEFDVElPTl9EUkFXLAogICAg
IH07Ci0gICAgZW51bSBJbW1lZGlhdGVTdGF0ZSB7Ci0gICAgICAgIElNTUVESUFURV9TVEFURV9O
T05FID0gMCwKLSAgICAgICAgSU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQyA9IDEsCi0gICAg
fTsKLSAgICBBY3Rpb24gbmV4dEFjdGlvbihJbW1lZGlhdGVTdGF0ZSkgY29uc3Q7CisgICAgQWN0
aW9uIG5leHRBY3Rpb24oKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVN0YXRlKEFjdGlvbik7CiAK
KyAgICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgc3lzdGVtIGlzIGluc2lkZSBhIHZzeW5jIGNh
bGxiYWNrLgorICAgIHZvaWQgc2V0SW5zaWRlVlN5bmMoYm9vbCk7CisKKyAgICAvLyBJbmRpY2F0
ZXMgd2hldGhlciB0aGUgTGF5ZXJUcmVlSG9zdEltcGwgaXMgdmlzaWJsZS4KKyAgICB2b2lkIHNl
dFZpc2libGUoYm9vbCk7CisKICAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhIHJlZHJhdyBpcyByZXF1
aXJlZCwgZWl0aGVyIGR1ZSB0byB0aGUgaW1wbCB0cmVlIGNoYW5naW5nCiAgICAgLy8gb3IgdGhl
IHNjcmVlbiBiZWluZyBkYW1hZ2VkIGFuZCBzaW1wbHkgbmVlZGluZyByZWRpc3BsYXkuCiAgICAg
dm9pZCBzZXROZWVkc1JlZHJhdygpOwpAQCAtOTUsNiArOTgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBtX25lZWRzUmVkcmF3OwogICAgIGJvb2wgbV9uZWVkc0NvbW1pdDsKICAgICBib29sIG1f
dXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7CisgICAgYm9vbCBtX2luc2lkZVZTeW5jOworICAg
IGJvb2wgbV92aXNpYmxlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRl
eCA5MmM5MWI1OTM4YjQ0N2MzMjA3ZjM0NjRhNWEzZTI2Y2VhZjdiYTg2Li5jMjIwNWU2MTQyMjcy
NGEyOTNkMDUxMjM5MmU4ZjA4OGYyOTdiZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cApAQCAtNDU1LDYgKzQ1NSwxMiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlv
bkNvbW1pdCgpCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSAwOwog
fQogCitib29sIENDVGhyZWFkUHJveHk6OnZpc2libGUoKSBjb25zdAoreworICAgIEFTU0VSVChp
c0ltcGxUaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnZpc2libGUo
KTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpkcmF3TGF5ZXJzQW5kU3dhcE9uSW1wbFRocmVh
ZCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmRyYXdMYXllcnNBbmRTd2Fw
T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggOWQy
NmNmODZlMjg0MmJiZjRjNzY3OTEzMDQ3Mzg4Nzc3YzYwN2FmZS4uZmE4ZTFiNGZmY2Q2NWM4OTgy
MDkyNzk4OTdmYzllOGRkNjcwYTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNzYs
NiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkRyYXdB
bmRTd2FwKCk7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNv
dXJjZXMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCk7CisgICAg
dmlydHVhbCBib29sIHZpc2libGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QuY3BwCmlu
ZGV4IDRiNWVhYzRjMzc2NTBkZDVlZGE3MmJjYzc5MzI1NTJmYTEyNTg0MjMuLjdmMDhjYzdmMWNl
MGQ5ZjI5NDcyMjE5N2RiOThmZWY2NTE5MDM3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdC5jcHAK
QEAgLTM5LDcgKzM5LDggQEAgY29uc3QgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNvbW1pdFN0
YXRlIGFsbENvbW1pdFN0YXRlc1tdID0gewogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpD
T01NSVRfU1RBVEVfSURMRSwKICAgICBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NU
QVRFX0ZSQU1FX0lOX1BST0dSRVNTLAogICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01N
SVRfU1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLAotICAgIENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlUCisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsCisgICAgQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9XQUlUSU5HX0ZPUl9GSVJTVF9EUkFXCiB9OwogCiAvLyBFeHBv
c2VzIHRoZSBwcm90ZWN0ZWQgc3RhdGUgZmllbGRzIG9mIHRoZSBDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZSBmb3IgdGVzdGluZwpAQCAtNTQsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRO
ZWVkc1JlZHJhdyhib29sIGIpIHsgbV9uZWVkc1JlZHJhdyA9IGI7IH0KICAgICBib29sIG5lZWRz
UmVkcmF3KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1JlZHJhdzsgfQogCisgICAgYm9vbCBpbnNp
ZGVWU3luYygpIGNvbnN0IHsgcmV0dXJuIG1faW5zaWRlVlN5bmM7IH0KKyAgICBib29sIHZpc2li
bGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KKwogICAgIHZvaWQgc2V0VXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmcoYm9vbCBiKSB7IG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcg
PSBiOyB9CiAgICAgYm9vbCB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc7IH0KIH07CkBAIC02Nyw4ICs3MSwxMiBA
QCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25CZWdpbnNG
cmFtZUlmTmVlZGVkKQogICAgICAgICBzdGF0ZS5zZXROZWVkc1JlZHJhdyhmYWxzZSk7CiAgICAg
ICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKICAgICAgICAgc3RhdGUuc2V0VXBkYXRl
TW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgICAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7Cisg
ICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisKKyAgICAgICAgc3RhdGUuc2V0SW5zaWRl
VlN5bmMoZmFsc2UpOworICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgICAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fTk9ORSwgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICB9CiAKICAgICAvLyBJZiBj
b21taXQgcmVxdWVzdGVkLCBiZWdpbiBhIGZyYW1lCkBAIC03OCwxMiArODYsMTMgQEAgVEVTVChD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3ROZXh0QWN0aW9uQmVnaW5zRnJhbWVJZk5l
ZWRlZCkKICAgICAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgICAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKICAgICAgICAgc3RhdGUuc2V0VXBkYXRlTW9yZVJlc291
cmNlc1BlbmRpbmcoZmFsc2UpOwotICAgICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICAgICAgc3RhdGUuc2V0Vmlz
aWJsZSh0cnVlKTsKICAgICB9CiAKICAgICAvLyBCZWdpbiB0aGUgZnJhbWUsIG1ha2Ugc3VyZSBu
ZWVkc0NvbW1pdCBhbmQgY29tbWl0U3RhdGUgdXBkYXRlIGNvcnJlY3RseS4KICAgICB7CiAgICAg
ICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICAgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVlKTsK
ICAgICAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9CRUdJTl9GUkFNRSk7CiAgICAgICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsK
ICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwpAQCAtOTgsMjYgKzEw
NywyOCBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRBY3Rpb25E
cmF3c09uVlN5bmMpCiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAgc3RhdGUu
c2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKICAgICAgICAgc3RhdGUuc2V0TmVl
ZHNSZWRyYXcodHJ1ZSk7CisgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CisgICAgICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKIAotICAgICAgICAvLyBDYXNlIDE6IG5lZWRz
Q29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlIHZzeW5jPWZhbHNl
LgorICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJj
ZXNQZW5kaW5nPWZhbHNlLgogICAgICAgICBzdGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CiAg
ICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAg
ICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUp
KTsKKyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJB
Vywgc3RhdGUubmV4dEFjdGlvbigpKTsKIAotICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0
PWZhbHNlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUgdnN5bmM9ZmFsc2UuCisgICAg
ICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmc9dHJ1ZS4KICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFsc2UpOwogICAgICAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICAg
ICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUu
bmV4dEFjdGlvbigpKTsKIAotICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBk
YXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UgdnN5bmM9ZmFsc2UuCisgICAgICAgIC8vIENh
c2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZS4K
ICAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CiAgICAgICAgIHN0YXRlLnNldFVw
ZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICAgICAgRVhQRUNU
X05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlv
bigpKTsKIAotICAgICAgICAvLyBDYXNlIDQ6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJl
c291cmNlc1BlbmRpbmc9dHJ1ZSB2c3luYz1mYWxzZS4KKyAgICAgICAgLy8gQ2FzZSA0OiBuZWVk
c0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCiAgICAgICAgIHN0
YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVz
b3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsKKyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICB9
CiAKICAgICAvLyBXaGVuIG9uIHZzeW5jLCB5b3Ugc2hvdWxkIGFsd2F5cyBkcmF3LiBFeHBlY3Qg
aWYgeW91J3JlIHJlYWR5IHRvIGNvbW1pdCwgaW4gd2hpY2ggY2FzZSBjb21taXQuCkBAIC0xMjUs
MzEgKzEzNiw2NiBAQCBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdE5leHRB
Y3Rpb25EcmF3c09uVlN5bmMpCiAgICAgICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKICAgICAgICAg
c3RhdGUuc2V0Q29tbWl0U3RhdGUoYWxsQ29tbWl0U3RhdGVzW2ldKTsKICAgICAgICAgc3RhdGUu
c2V0TmVlZHNSZWRyYXcodHJ1ZSk7CisgICAgICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7Cisg
ICAgICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOwogICAgICAgICBDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QWN0aW9uIGV4cGVjdGVkQWN0aW9uOwogICAgICAgICBpZiAoYWxsQ29tbWl0
U3RhdGVzW2ldICE9IENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlf
VE9fQ09NTUlUKQogICAgICAgICAgICAgZXhwZWN0ZWRBY3Rpb24gPSBDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0RSQVc7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV4cGVjdGVk
QWN0aW9uID0gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQ7CiAKLSAgICAg
ICAgLy8gQ2FzZSAxOiBuZWVkc0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
Zz1mYWxzZSB2c3luYz10cnVlLgorICAgICAgICAvLyBDYXNlIDE6IG5lZWRzQ29tbWl0PWZhbHNl
IHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPWZhbHNlLgogICAgICAgICBzdGF0ZS5zZXROZWVk
c0NvbW1pdChmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nKGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0
QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZT
WU5DKSk7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlv
bigpKTsKIAotICAgICAgICAvLyBDYXNlIDI6IG5lZWRzQ29tbWl0PWZhbHNlIHVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nPXRydWUgdnN5bmM9dHJ1ZS4KKyAgICAgICAgLy8gQ2FzZSAyOiBuZWVk
c0NvbW1pdD1mYWxzZSB1cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz10cnVlLgogICAgICAgICBz
dGF0ZS5zZXROZWVkc0NvbW1pdChmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVS
ZXNvdXJjZXNQZW5kaW5nKHRydWUpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRBY3Rpb24s
IHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFU
RV9JTlNJREVfVlNZTkMpKTsKKyAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogCi0gICAgICAgIC8vIENhc2UgMzogbmVlZHNDb21taXQ9dHJ1ZSB1
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZz1mYWxzZSB2c3luYz10cnVlLgorICAgICAgICAvLyBD
YXNlIDM6IG5lZWRzQ29tbWl0PXRydWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2Uu
CiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRV
cGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyhmYWxzZSk7Ci0gICAgICAgIEVYUEVDVF9FUShleHBl
Y3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1N
RURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRB
Y3Rpb24sIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKLSAgICAgICAgLy8gQ2FzZSA0OiBuZWVkc0Nv
bW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUgdnN5bmM9dHJ1ZS4KKyAg
ICAgICAgLy8gQ2FzZSA0OiBuZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5k
aW5nPXRydWUuCiAgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwogICAgICAgICBz
dGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKLSAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkQWN0aW9uLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgICAgIEVYUEVDVF9FUShl
eHBlY3RlZEFjdGlvbiwgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICB9Cit9CisKK1RFU1QoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0Tm9Db21taXRTdGF0ZXNSZWRyYXdXaGVuSW52
aXNpYmxlKQoreworICAgIC8vIElmIG5vdCB2aXNpYmxlLCBuZXZlciByZWRyYXcuCisgICAgc2l6
ZV90IG51bUNvbW1pdFN0YXRlcyA9IHNpemVvZihhbGxDb21taXRTdGF0ZXMpIC8gc2l6ZW9mKEND
U2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDb21taXRTdGF0ZSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1Db21taXRTdGF0ZXM7ICsraSkgeworICAgICAgICBTdGF0ZU1hY2hpbmUgc3Rh
dGU7CisgICAgICAgIHN0YXRlLnNldENvbW1pdFN0YXRlKGFsbENvbW1pdFN0YXRlc1tpXSk7Cisg
ICAgICAgIHN0YXRlLnNldE5lZWRzUmVkcmF3KHRydWUpOworICAgICAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYyhmYWxzZSk7CisgICAgICAgIHN0YXRlLnNldFZpc2libGUoZmFsc2UpOworCisgICAg
ICAgIC8vIENhc2UgMTogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRp
bmc9ZmFsc2UuCisgICAgICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KGZhbHNlKTsKKyAgICAgICAg
c3RhdGUuc2V0VXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmcoZmFsc2UpOworICAgICAgICBFWFBF
Q1RfTkUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOworCisgICAgICAgIC8vIENhc2UgMjogbmVlZHNDb21taXQ9ZmFsc2UgdXBkYXRlTW9y
ZVJlc291cmNlc1BlbmRpbmc9dHJ1ZS4KKyAgICAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQoZmFs
c2UpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGluZyh0cnVlKTsK
KyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fRFJBVywg
c3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgICAgICAvLyBDYXNlIDM6IG5lZWRzQ29tbWl0PXRy
dWUgdXBkYXRlTW9yZVJlc291cmNlc1BlbmRpbmc9ZmFsc2UuCisgICAgICAgIHN0YXRlLnNldE5l
ZWRzQ29tbWl0KHRydWUpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVu
ZGluZyhmYWxzZSk7CisgICAgICAgIEVYUEVDVF9ORShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAgICAgLy8gQ2FzZSA0OiBu
ZWVkc0NvbW1pdD10cnVlIHVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nPXRydWUuCisgICAgICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOworICAgICAgICBzdGF0ZS5zZXRVcGRhdGVNb3Jl
UmVzb3VyY2VzUGVuZGluZyh0cnVlKTsKKyAgICAgICAgRVhQRUNUX05FKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICB9CiB9CiAK
QEAgLTE1OSwxNyArMjA1LDI3IEBAIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBU
ZXN0VXBkYXRlc19Ob1JlZHJhd19PbmVSb3VuZE9mVXBkYXRlcykKICAgICBzdGF0ZS5zZXRDb21t
aXRTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JF
U09VUkNFUyk7CiAgICAgc3RhdGUuc2V0TmVlZHNSZWRyYXcoZmFsc2UpOwogICAgIHN0YXRlLnNl
dFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0
YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9O
T05FKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVH
SU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgc3RhdGUuc2V0
VmlzaWJsZSh0cnVlKTsKKworICAgIC8vIFZlcmlmeSB3ZSBiZWdpbiB1cGRhdGUsIGJvdGggZm9y
IHZzeW5jIGFuZCBub3QgdnN5bmMuCisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFU
RV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAK
ICAgICAvLyBCZWdpbiBhbiB1cGRhdGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5l
eHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7
Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3Rh
dGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lO
U0lERV9WU1lOQykpOworCisgICAgLy8gVmVyaWlmeSB3ZSBkb24ndCBkbyBhbnl0aGluZywgYm90
aCBmb3IgdnN5bmMgYW5kIG5vdCB2c3luYy4KKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyhmYWxz
ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gRW5kIHVwZGF0ZSB3aXRoIG5vIG1vcmUgdXBkYXRlcyBw
ZW5kaW5nLgogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNl
KTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQs
IHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFU
RV9OT05FKSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIEVYUEVDVF9F
UShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlv
bigpKTsKIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVz
X05vUmVkcmF3X1R3b1JvdW5kc09mVXBkYXRlcykKQEAgLTE3OCwyNCArMjM0LDQyIEBAIFRFU1Qo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19Ob1JlZHJhd19Ud29Sb3Vu
ZHNPZlVwZGF0ZXMpCiAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5l
ZWRzUmVkcmF3KGZhbHNlKTsKICAgICBzdGF0ZS5zZXRVcGRhdGVNb3JlUmVzb3VyY2VzUGVuZGlu
ZyhmYWxzZSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRF
X0lOU0lERV9WU1lOQykpOworICAgIHN0YXRlLnNldFZpc2libGUodHJ1ZSk7CiAKLSAgICAvLyBC
ZWdpbiBhbiB1ZHBhdGUuCisgICAgLy8gVmVyaWZ5IHRoZSB1cGRhdGUgYmVnaW5zLCBib3RoIGZv
ciB2c3luYyBhbmQgbm90IHZzeW5jLgorICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsK
KyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERB
VEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmModHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
CisgICAgLy8gQmVnaW4gYW4gdXBkYXRlLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkp
OwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0
YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9J
TlNJREVfVlNZTkMpKTsKKworICAgIC8vIFZlcmlmeSB3ZSBkbyBub3RoaW5nLCBib3RoIGZvciB2
c3luYyBhbmQgbm90IHZzeW5jLgorICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAg
ICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5u
ZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKHRydWUpOworICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rp
b24oKSk7CiAKICAgICAvLyBBY2sgdGhlIHVwZGF0ZSB3aXRoIG1vcmUgcGVuZGluZy4KICAgICBz
dGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZSh0cnVlKTsKLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNP
VVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFU
RV9TVEFURV9OT05FKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CiAKLSAg
ICAvLyBCZWdpbiBhbm90aGVyIHVwZGF0ZSwgZW5kIGl0IHdpdGggbm9uZSBlcGVuZGluZy4KKyAg
ICAvLyBWZXJpZnkgd2UgdXBkYXRlIG1vcmUsIGJvdGggZm9yIHZzeW5jIGFuZCBub3QgdnN5bmMu
CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3Rh
dGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBF
WFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9S
RV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBCZWdpbiBhbm90aGVy
IHVwZGF0ZSwgd2hpbGUgaW5zaWRlIHZzeW5jLiBBbmQsIGl0IHVwZGF0aW5nLgorICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKHRydWUpOwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKICAgICBz
dGF0ZS5iZWdpblVwZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7Ci0gICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0
aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAg
IEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUu
bmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lE
RV9WU1lOQykpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGNvbW1pdCwgaW5kZXBlbmRlbnQgb2Yg
dnN5bmMuCisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigp
KTsKKyAgICBzdGF0ZS5zZXRJbnNpZGVWU3luYyh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9
CiAKIFRFU1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0VXBkYXRlc19XaXRoUmVk
cmF3X09uZVJvdW5kT2ZVcGRhdGVzKQpAQCAtMjA0LDM2ICsyNzgsNTQgQEAgVEVTVChDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RVcGRhdGVzX1dpdGhSZWRyYXdfT25lUm91bmRPZlVw
ZGF0ZXMpCiAgICAgc3RhdGUuc2V0Q29tbWl0U3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6
OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJDRVMpOwogICAgIHN0YXRlLnNldE5lZWRzUmVk
cmF3KHRydWUpOwogICAgIHN0YXRlLnNldFVwZGF0ZU1vcmVSZXNvdXJjZXNQZW5kaW5nKGZhbHNl
KTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7CisgICAgc3RhdGUuc2V0VmlzaWJsZSh0cnVl
KTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9V
UERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAvLyBCZWdp
biBhbiB1cGRhdGUuCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOwotICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFURV9TVEFURV9JTlNJREVfVlNZTkMpKTsKIAot
ICAgIC8vIERyYXcuCisgICAgLy8gRW5zdXJlIHdlIGRyYXcgb24gdGhlIG5leHQgdnN5bmMgZXZl
biB0aG91Z2ggYW4gdXBkYXRlIGlzIGluLXByb2dyZXNzLgorICAgIHN0YXRlLnNldEluc2lkZVZT
eW5jKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0RSQVcsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9EUkFXKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVs
ZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVy
U3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CiAKLSAgICAvLyBG
aW5pc2ggdXBkYXRlLCBsZXZhZSBtb3JlIHJlc291cmNlcyBwZW5kaW5nLgorICAgIC8vIEVuc3Vy
ZSB0aGF0IHdlIG9uY2Ugd2UgaGF2ZSBkcmF3biwgd2UgZG9udCBkbyBhbnl0aGluZyBlbHNlLgor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBMZWF2ZSB0aGUgdnN5bmMgYmVmb3JlIHdlIGZpbmlz
aCB0aGUgdXBkYXRlLgorICAgIHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKworICAgIC8v
IEZpbmlzaCB1cGRhdGUgYnV0IGxlYXZlIG1vcmUgcmVzb3VyY2VzIHBlbmRpbmcuCiAgICAgc3Rh
dGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUodHJ1ZSk7Ci0gICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VS
Q0VTLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVf
U1RBVEVfTk9ORSkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNU
SU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOwogCi0gICAg
Ly8gQmVnaW4gYW5vdGhlciB1cGRhdGUuIEZpbmlzaCBpdCBpbW1lZGlhdGVseS4KKyAgICAvLyBW
ZXJpZnkgdGhhdCByZWdhcmRsZXNzIG9mIHZzeW5jLCB3ZSB1cGRhdGUgc29tZSBtb3JlLgorICAg
IHN0YXRlLnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5l
eHRBY3Rpb24oKSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgRVhQRUNU
X0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVT
T1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQmVnaW4gYW5vdGhlciB1cGRh
dGUuIEZpbmlzaCBpdCBpbW1lZGlhdGVseS4gSW5zaWRlIHRoZSB2c3luYy4KKyAgICBzdGF0ZS5z
ZXRJbnNpZGVWU3luYyh0cnVlKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUyk7CisgICAgc3Rh
dGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOwogICAgIHN0YXRlLmJlZ2luVXBkYXRlTW9yZVJlc291
cmNlc0NvbXBsZXRlKGZhbHNlKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OklNTUVESUFURV9TVEFURV9OT05FKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisKKyAgICAvLyBWZXJp
Znkgd2UgY29tbWl0IHJlZ2FyZGxlc3Mgb2YgdnN5bmMgc3RhdGUKKyAgICBzdGF0ZS5zZXRJbnNp
ZGVWU3luYyhmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworICAgIHN0YXRlLnNldEluc2lkZVZT
eW5jKHRydWUpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9O
X0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKIH0KIAogVEVTVChDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZVRlc3QsIFRlc3RTZXROZWVkc0NvbW1pdElzTm90TG9zdCkKIHsKICAgICBTdGF0ZU1h
Y2hpbmUgc3RhdGU7CiAgICAgc3RhdGUuc2V0TmVlZHNDb21taXQodHJ1ZSk7CisgICAgc3RhdGUu
c2V0VmlzaWJsZSh0cnVlKTsKIAogICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KLSAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4
dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX05PTkUpKTsK
LSAgICBzdGF0ZS51cGRhdGVTdGF0ZShzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwor
ICAgIHN0YXRlLnVwZGF0ZVN0YXRlKHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAgRVhQRUNUX0VR
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1Ms
IHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogCiAgICAgLy8gTm93LCB3aGlsZSB0aGUgZnJhbWUgaXMg
aW4gcHJvZ3Jlc3MsIHNldCBhbm90aGVyIGNvbW1pdC4KQEAgLTI0Myw0NCArMzM1LDU0IEBAIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0U2V0TmVlZHNDb21taXRJc05vdExv
c3QpCiAgICAgLy8gTGV0IHRoZSBmcmFtZSBmaW5pc2guCiAgICAgc3RhdGUuYmVnaW5GcmFtZUNv
bXBsZXRlKCk7CiAgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRf
U1RBVEVfVVBEQVRJTkdfUkVTT1VSQ0VTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKLSAgICBFWFBF
Q1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9VUERBVEVfTU9SRV9S
RVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVE
SUFURV9TVEFURV9OT05FKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9uKCkp
OwogICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
QkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAgICAg
c3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2VzQ29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1J
VCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRFX0lOU0lERV9WU1lOQykpOworCisgICAgLy8g
RXhwZWN0IHRvIGNvbW1pdCByZWdhcmRsZXNzIG9mIHZzeW5jIHN0YXRlLgorICAgIHN0YXRlLnNl
dEluc2lkZVZTeW5jKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuc2V0SW5z
aWRlVlN5bmModHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpB
Q1RJT05fQ09NTUlULCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQ29tbWl0IGFuZCBt
YWtlIHN1cmUgd2UgZHJhdyBvbiBuZXh0IHZzeW5jCiAgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NT
Y2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9DT01NSVQpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0YXRl
KCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcs
IHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19GT1JfRklSU1RfRFJBVywgc3RhdGUuY29tbWl0U3Rh
dGUoKSk7CisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9EUkFXKTsKIAogICAgIC8vIFZlcmlmeSB0aGF0IGFub3RoZXIgY29tbWl0IHdpbGwgYmVn
aW4uCi0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5f
RlJBTUUsIHN0YXRlLm5leHRBY3Rpb24oQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OklNTUVESUFU
RV9TVEFURV9OT05FKSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMoZmFsc2UpOworICAgIEVY
UEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0
ZS5uZXh0QWN0aW9uKCkpOwogfQogCiBURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwg
VGVzdEZ1bGxDeWNsZSkKIHsKICAgICBTdGF0ZU1hY2hpbmUgc3RhdGU7CisgICAgc3RhdGUuc2V0
VmlzaWJsZSh0cnVlKTsKIAogICAgIC8vIFN0YXJ0IGNsZWFuIGFuZCBzZXQgY29tbWl0LgogICAg
IHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwotICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0
YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FLCBzdGF0ZS5uZXh0QWN0
aW9uKCkpOwogCiAgICAgLy8gQmVnaW4gdGhlIGZyYW1lLgogICAgIHN0YXRlLnVwZGF0ZVN0YXRl
KENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOwogICAgIEVYUEVD
VF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dS
RVNTLCBzdGF0ZS5jb21taXRTdGF0ZSgpKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHND
b21taXQoKSk7Ci0gICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
Tk9ORSwgc3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRF
X1NUQVRFX05PTkUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogCiAgICAgLy8gVGVsbCB0aGUgc2NoZWR1
bGVyIHRoZSBmcmFtZSBmaW5pc2hlZC4KICAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsK
ICAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERB
VElOR19SRVNPVVJDRVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwotICAgIEVYUEVDVF9FUShDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywg
c3RhdGUubmV4dEFjdGlvbihDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6SU1NRURJQVRFX1NUQVRF
X05PTkUpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9C
RUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAgICAv
LyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIHVwZGF0ZSBiZWdhbiBhbmQgZmluaXNoZWQKICAgICBz
dGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQ
REFURV9NT1JFX1JFU09VUkNFUyk7CiAgICAgc3RhdGUuYmVnaW5VcGRhdGVNb3JlUmVzb3VyY2Vz
Q29tcGxldGUoZmFsc2UpOwogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6
Q09NTUlUX1NUQVRFX1JFQURZX1RPX0NPTU1JVCwgc3RhdGUuY29tbWl0U3RhdGUoKSk7Ci0gICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQ09NTUlULCBzdGF0ZS5u
ZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkp
OworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCwg
c3RhdGUubmV4dEFjdGlvbigpKTsKIAogICAgIC8vIENvbW1pdC4KICAgICBzdGF0ZS51cGRhdGVT
dGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7CkBAIC0yODgsMjQg
KzM5MCwxMjAgQEAgVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RGdWxsQ3lj
bGUpCiAgICAgRVhQRUNUX1RSVUUoc3RhdGUubmVlZHNSZWRyYXcoKSk7CiAKICAgICAvLyBFeHBl
Y3QgdG8gZG8gbm90aGluZyB1bnRpbCB2c3luYy4KLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3Rh
dGVNYWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiAKICAg
ICAvLyBBdCB2c3luYywgZHJhdy4KLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9EUkFXLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpJTU1FRElBVEVfU1RBVEVfSU5TSURFX1ZTWU5DKSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5
bmModHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05f
RFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKICAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOworICAgIHN0YXRlLnNldEluc2lkZVZTeW5j
KGZhbHNlKTsKIAogICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQsIG5vIGRyYXcgbmVlZGVk
LCBubyBhY3Rpb24gbmVlZGVkLgogICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGlu
ZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOwogICAgIEVYUEVDVF9G
QUxTRShzdGF0ZS5uZWVkc1JlZHJhdygpKTsKLSAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0
ZU1hY2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpJTU1FRElBVEVfU1RBVEVfTk9ORSkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CiB9CiAKIFRF
U1QoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmVUZXN0LCBUZXN0RnVsbEN5Y2xlV2l0aENvbW1pdFJl
cXVlc3RJbmJldHdlZW4pCiB7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNl
dFZpc2libGUodHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAg
ICBzdGF0ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKwor
ICAgIC8vIEJlZ2luIHRoZSBmcmFtZS4KKyAgICBzdGF0ZS51cGRhdGVTdGF0ZShDQ1NjaGVkdWxl
clN0YXRlTWFjaGluZTo6QUNUSU9OX0JFR0lOX0ZSQU1FKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hl
ZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9GUkFNRV9JTl9QUk9HUkVTUywgc3RhdGUu
Y29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLm5lZWRzQ29tbWl0KCkpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBSZXF1ZXN0IGFub3RoZXIgY29tbWl0IHdoaWxlIHRo
ZSBjb21taXQgaXMgaW4gZmxpZ2h0LgorICAgIHN0YXRlLnNldE5lZWRzQ29tbWl0KHRydWUpOwor
ICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05PTkUsIHN0YXRl
Lm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBUZWxsIHRoZSBzY2hlZHVsZXIgdGhlIGZyYW1lIGZp
bmlzaGVkLgorICAgIHN0YXRlLmJlZ2luRnJhbWVDb21wbGV0ZSgpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX1VQREFUSU5HX1JFU09VUkNFUywg
c3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNo
aW5lOjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTLCBzdGF0ZS5uZXh0QWN0aW9u
KCkpOworCisgICAgLy8gVGVsbCB0aGUgc2NoZWR1bGVyIHRoZSB1cGRhdGUgYmVnYW4gYW5kIGZp
bmlzaGVkCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFD
VElPTl9CRUdJTl9VUERBVEVfTU9SRV9SRVNPVVJDRVMpOworICAgIHN0YXRlLmJlZ2luVXBkYXRl
TW9yZVJlc291cmNlc0NvbXBsZXRlKGZhbHNlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJT
dGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9SRUFEWV9UT19DT01NSVQsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NP
TU1JVCwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIENvbW1pdC4KKyAgICBzdGF0ZS51
cGRhdGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0NPTU1JVCk7CisgICAg
RVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfV0FJVElOR19G
T1JfRklSU1RfRFJBVywgc3RhdGUuY29tbWl0U3RhdGUoKSk7CisgICAgRVhQRUNUX1RSVUUoc3Rh
dGUubmVlZHNSZWRyYXcoKSk7CisKKyAgICAvLyBFeHBlY3QgdG8gZG8gbm90aGluZyB1bnRpbCB2
c3luYy4KKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9OT05F
LCBzdGF0ZS5uZXh0QWN0aW9uKCkpOworCisgICAgLy8gQXQgdnN5bmMsIGRyYXcuCisgICAgc3Rh
dGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVN
YWNoaW5lOjpBQ1RJT05fRFJBVywgc3RhdGUubmV4dEFjdGlvbigpKTsKKyAgICBzdGF0ZS51cGRh
dGVTdGF0ZShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX0RSQVcpOworICAgIHN0YXRl
LnNldEluc2lkZVZTeW5jKGZhbHNlKTsKKworICAgIC8vIFNob3VsZCBiZSBzeW5jaHJvbml6ZWQs
IG5vIGRyYXcgbmVlZGVkLCBubyBhY3Rpb24gbmVlZGVkLgorICAgIEVYUEVDVF9FUShDQ1NjaGVk
dWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0lETEUsIHN0YXRlLmNvbW1pdFN0YXRlKCkp
OworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS5uZWVkc1JlZHJhdygpKTsKKyAgICBFWFBFQ1RfRVEo
Q0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFj
dGlvbigpKTsKK30KKworVEVTVChDQ1NjaGVkdWxlclN0YXRlTWFjaGluZVRlc3QsIFRlc3RSZXF1
ZXN0Q29tbWl0SW52aXNpYmxlKQoreworICAgIFN0YXRlTWFjaGluZSBzdGF0ZTsKKyAgICBzdGF0
ZS5zZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9OT05FLCBzdGF0ZS5uZXh0QWN0aW9uKCkpOwogfQogCi1URVNUKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEZ1bGxDeWNsZVdpdGhSZWRyYXdJbmJldHdlZW4p
CitURVNUKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lVGVzdCwgVGVzdEdvZXNJbnZpc2libGVNaWRD
b21taXQpCiB7CisgICAgU3RhdGVNYWNoaW5lIHN0YXRlOworICAgIHN0YXRlLnNldFZpc2libGUo
dHJ1ZSk7CisKKyAgICAvLyBTdGFydCBjbGVhbiBhbmQgc2V0IGNvbW1pdC4KKyAgICBzdGF0ZS5z
ZXROZWVkc0NvbW1pdCh0cnVlKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hp
bmU6OkFDVElPTl9CRUdJTl9GUkFNRSwgc3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJl
Z2luIHRoZSBmcmFtZSB3aGlsZSB2aXNpYmxlLgorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2No
ZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fQkVHSU5fRlJBTUUpOworICAgIEVYUEVDVF9FUShD
Q1NjaGVkdWxlclN0YXRlTWFjaGluZTo6Q09NTUlUX1NUQVRFX0ZSQU1FX0lOX1BST0dSRVNTLCBz
dGF0ZS5jb21taXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUubmVlZHNDb21taXQo
KSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwg
c3RhdGUubmV4dEFjdGlvbigpKTsKKworICAgIC8vIEJlY29tZSBpbnZpc2libGUKKyAgICBzdGF0
ZS5zZXRWaXNpYmxlKGZhbHNlKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgZnJh
bWUgZmluaXNoZWQKKyAgICBzdGF0ZS5iZWdpbkZyYW1lQ29tcGxldGUoKTsKKyAgICBFWFBFQ1Rf
RVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkNPTU1JVF9TVEFURV9VUERBVElOR19SRVNPVVJD
RVMsIHN0YXRlLmNvbW1pdFN0YXRlKCkpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRl
TWFjaGluZTo6QUNUSU9OX0JFR0lOX1VQREFURV9NT1JFX1JFU09VUkNFUywgc3RhdGUubmV4dEFj
dGlvbigpKTsKKworICAgIC8vIFRlbGwgdGhlIHNjaGVkdWxlciB0aGUgdXBkYXRlIGJlZ2FuIGFu
ZCBmaW5pc2hlZAorICAgIHN0YXRlLnVwZGF0ZVN0YXRlKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5l
OjpBQ1RJT05fQkVHSU5fVVBEQVRFX01PUkVfUkVTT1VSQ0VTKTsKKyAgICBzdGF0ZS5iZWdpblVw
ZGF0ZU1vcmVSZXNvdXJjZXNDb21wbGV0ZShmYWxzZSk7CisgICAgRVhQRUNUX0VRKENDU2NoZWR1
bGVyU3RhdGVNYWNoaW5lOjpDT01NSVRfU1RBVEVfUkVBRFlfVE9fQ09NTUlULCBzdGF0ZS5jb21t
aXRTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmU6OkFDVElP
Tl9DT01NSVQsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisKKyAgICAvLyBDb21taXQgaW4gaW52aXNp
YmxlIHN0YXRlIHNob3VsZCBsZWF2ZSB1czoKKyAgICAvLyAtIENPTU1JVF9TVEFURV9XQUlUSU5H
X0ZPUl9GSVJTVF9EUkFXCisgICAgLy8gLSBXYWl0aW5nIGZvciByZWRyYXcuCisgICAgLy8gLSBO
byBjb21taXQgbmVlZGVkCisgICAgc3RhdGUudXBkYXRlU3RhdGUoQ0NTY2hlZHVsZXJTdGF0ZU1h
Y2hpbmU6OkFDVElPTl9DT01NSVQpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFj
aGluZTo6Q09NTUlUX1NUQVRFX1dBSVRJTkdfRk9SX0ZJUlNUX0RSQVcsIHN0YXRlLmNvbW1pdFN0
YXRlKCkpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLm5lZWRzUmVkcmF3KCkpOworICAgIEVYUEVD
VF9GQUxTRShzdGF0ZS5uZWVkc0NvbW1pdCgpKTsKKworICAgIC8vIEV4cGVjdCB0byBkbyBub3Ro
aW5nLCBib3RoIGluIGFuZCBvdXQgb2YgdnN5bmMuCisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmMo
ZmFsc2UpOworICAgIEVYUEVDVF9FUShDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QUNUSU9OX05P
TkUsIHN0YXRlLm5leHRBY3Rpb24oKSk7CisgICAgc3RhdGUuc2V0SW5zaWRlVlN5bmModHJ1ZSk7
CisgICAgRVhQRUNUX0VRKENDU2NoZWR1bGVyU3RhdGVNYWNoaW5lOjpBQ1RJT05fTk9ORSwgc3Rh
dGUubmV4dEFjdGlvbigpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NjaGVkdWxlclRlc3QuY3BwCmluZGV4IDZjMzlmNzRiMzAyNTQ2MWNlMTg1OWU3ZTZl
MzlkYmIzMjBkMzhlNTkuLjIyZWVkMDIyN2Y5YzliYmU5ODdmNGI1YmNkODU4MTI4ZTc4ZmQ5YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTY2hlZHVsZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdC5j
cHAKQEAgLTQwLDIyICs0MCwyOSBAQCBuYW1lc3BhY2UgewogY2xhc3MgRmFrZUNDU2NoZWR1bGVy
Q2xpZW50IDogcHVibGljIENDU2NoZWR1bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBGYWtlQ0NT
Y2hlZHVsZXJDbGllbnQoKSB7IHJlc2V0KCk7IH0KLSAgICB2b2lkIHJlc2V0KCkgeyBtX2FjdGlv
bnMuY2xlYXIoKTsgbV9oYXNNb3JlUmVzb3VyY2VVcGRhdGVzID0gZmFsc2U7IH0KKyAgICB2b2lk
IHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fYWN0aW9ucy5jbGVhcigpOworICAgICAgICBtX2hh
c01vcmVSZXNvdXJjZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgbV92aXNpYmxlID0gdHJ1ZTsK
KyAgICB9CiAKICAgICB2b2lkIHNldEhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoYm9vbCBiKSB7IG1f
aGFzTW9yZVJlc291cmNlVXBkYXRlcyA9IGI7IH0KKyAgICB2b2lkIHNldFZpc2libGUoYm9vbCBi
KSB7IG1fdmlzaWJsZSA9IGI7IH0KIAogICAgIGludCBudW1BY3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihtX2FjdGlvbnMuc2l6ZSgpKTsgfQogICAgIGNvbnN0IGNoYXIq
IGFjdGlvbihpbnQgaSkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zW2ldOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGFzTW9yZVJlc291cmNlVXBkYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTW9y
ZVJlc291cmNlVXBkYXRlczsgfQotCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUoKSB7IG1fYWN0aW9ucy5wdXNoX2JhY2soInNjaGVkdWxlZEFjdGlvbkJlZ2luRnJh
bWUiKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcCgpIHsg
bV9hY3Rpb25zLnB1c2hfYmFjaygic2NoZWR1bGVkQWN0aW9uRHJhd0FuZFN3YXAiKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkgeyBtX2Fj
dGlvbnMucHVzaF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIik7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkgeyBtX2FjdGlvbnMucHVz
aF9iYWNrKCJzY2hlZHVsZWRBY3Rpb25Db21taXQiKTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNp
YmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CiAKIHByb3RlY3RlZDoKICAgICBib29s
IG1faGFzTW9yZVJlc291cmNlVXBkYXRlczsKKyAgICBib29sIG1fdmlzaWJsZTsKICAgICBzdGQ6
OnZlY3Rvcjxjb25zdCBjaGFyKj4gbV9hY3Rpb25zOwogfTsKIApAQCAtMTEwLDE2ICsxMTcsMTYg
QEAgVEVTVChDQ1NjaGVkdWxlclRlc3QsIFJlcXVlc3RDb21taXRBZnRlckJlZ2luRnJhbWUpCiAg
ICAgLy8gbmVlZGVkLCBiZWdpbkZyYW1lQ29tcGxldGUgc2hvdWxkIHVwZGF0ZU1vcmVSZXNvdXJj
ZXMsIHRoZW4gY29tbWl0LCB0aGVuCiAgICAgLy8gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICBz
Y2hlZHVsZXItPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwotICAgIEVYUEVDVF9FUSgzLCBjbGllbnQu
bnVtQWN0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm51bUFjdGlvbnMoKSk7CiAg
ICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIiwgY2xp
ZW50LmFjdGlvbigwKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25Db21taXQi
LCBjbGllbnQuYWN0aW9uKDEpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInNjaGVkdWxlZEFjdGlvbkJl
Z2luRnJhbWUiLCBjbGllbnQuYWN0aW9uKDIpKTsKICAgICBjbGllbnQucmVzZXQoKTsKIAogICAg
IC8vIFRpY2sgc2hvdWxkIGRyYXcgYnV0IHRoZW4gYmVnaW4gYW5vdGhlciBmcmFtZS4KICAgICB0
aW1lU291cmNlLT50aWNrKCk7Ci0gICAgRVhQRUNUX0VRKDEsIGNsaWVudC5udW1BY3Rpb25zKCkp
OworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubnVtQWN0aW9ucygpKTsKICAgICBFWFBFQ1RfU1RS
RVEoInNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwIiwgY2xpZW50LmFjdGlvbigwKSk7CisgICAg
RVhQRUNUX1NUUkVRKCJzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lIiwgY2xpZW50LmFjdGlvbigx
KSk7CiAgICAgY2xpZW50LnJlc2V0KCk7CiB9CiAK
</data>
<flag name="review"
          id="111719"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>