<?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>77632</bug_id>
          
          <creation_ts>2012-02-02 05:34:35 -0800</creation_ts>
          <short_desc>[Qt] Split QQuickWebViewPrivate in two classes, for desktop and touch behavior.</short_desc>
          <delta_ts>2012-02-03 06:49:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>
          
          <blocked>77111</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>547817</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-02 05:34:35 -0800</bug_when>
    <thetext>[Qt] Split QQuickWebViewPrivate in two classes, for desktop and touch behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547826</commentid>
    <comment_count>1</comment_count>
      <attachid>125127</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-02 05:44:58 -0800</bug_when>
    <thetext>Created attachment 125127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547828</commentid>
    <comment_count>2</comment_count>
      <attachid>125128</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-02 05:51:39 -0800</bug_when>
    <thetext>Created attachment 125128
Code moving patch (will squash before commit)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547829</commentid>
    <comment_count>3</comment_count>
      <attachid>125127</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-02 05:52:28 -0800</bug_when>
    <thetext>Comment on attachment 125127
Patch

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Replace the runtime property setting the desktop behavior on each instance by a static boolean
&gt; +        controlling the behavior used by WebView created in the future.
&gt; +
&gt; +        * UIProcess/API/qt/qquickwebpage.cpp:

a bit shorter lines and some added newlines could make this changelog readable

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:58
&gt; +static bool sUseTraditionalDesktopBehaviour = false;

I believe s_ is what is commonly used

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:60
&gt; +static QQuickWebViewPrivate* createPrivateObject(QQuickWebView* pub)

pub?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:65
&gt; +    if (sUseTraditionalDesktopBehaviour)
&gt; +        return new QQuickWebViewDesktopPrivate(pub);
&gt; +    return new QQuickWebViewTouchPrivate(pub);
&gt; +}

im not convinced that Touch is the best way to describe the difference between the classes

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:684
&gt; +void QQuickWebViewExperimental::setUseTraditionalDesktopBehaviour(bool enable)
&gt; +{
&gt; +    sUseTraditionalDesktopBehaviour = enable;
&gt; +}
&gt; +
&gt; +bool QQuickWebViewExperimental::useTraditionalDesktopBehaviour()
&gt; +{
&gt; +    return sUseTraditionalDesktopBehaviour;
&gt; +}
&gt; +

So this cannot be changed at runtime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547853</commentid>
    <comment_count>4</comment_count>
      <attachid>125127</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-02 06:56:14 -0800</bug_when>
    <thetext>Comment on attachment 125127
Patch

Following ric discussions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547854</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-02 06:56:25 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 125127 [details])
&gt; Following ric discussions

IRC that is</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547867</commentid>
    <comment_count>6</comment_count>
      <attachid>125133</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-02 08:00:25 -0800</bug_when>
    <thetext>Created attachment 125133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548005</commentid>
    <comment_count>7</comment_count>
      <attachid>125133</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-02 11:18:48 -0800</bug_when>
    <thetext>Comment on attachment 125133
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548679</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-02-03 06:49:56 -0800</bug_when>
    <thetext>Committed r106658: &lt;http://trac.webkit.org/changeset/106658&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125127</attachid>
            <date>2012-02-02 05:44:58 -0800</date>
            <delta_ts>2012-02-02 08:00:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77632-20120202144042.patch</filename>
            <type>text/plain</type>
            <size>57680</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ3MWFlMDBkZmRlNzQ5
ZjY0ZGJjMGEyNWE2ZTZhY2MyYzlmZGZhZC4uMjExYTkzYjQ0NDgwYjc5Y2MxNDA1NGVmNjI5ZTQ1
NmYzZTdjNGQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkwIEBACiAyMDEyLTAyLTAyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0
XSBTcGxpdCBRUXVpY2tXZWJWaWV3UHJpdmF0ZSBpbiB0d28gY2xhc3NlcywgZm9yIGRlc2t0b3Ag
YW5kIHRvdWNoIGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc2MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIHRoZSBydW50aW1lIHByb3BlcnR5IHNldHRpbmcgdGhlIGRlc2t0
b3AgYmVoYXZpb3Igb24gZWFjaCBpbnN0YW5jZSBieSBhIHN0YXRpYyBib29sZWFuCisgICAgICAg
IGNvbnRyb2xsaW5nIHRoZSBiZWhhdmlvciB1c2VkIGJ5IFdlYlZpZXcgY3JlYXRlZCBpbiB0aGUg
ZnV0dXJlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcDoK
KyAgICAgICAgTGV0IG9ubHkgc2V0Q29udGVudHNTaXplIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhl
IGRyYXdpbmcgYXJlYSBpbnN0ZWFkIG9mIGRlZmVycmluZyBpdCB1bnRpbCBnZW9tZXRyeUNoYW5n
ZWQgaXMgY2FsbGVkLgorICAgICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBh
Z2VQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaDoKKyAgICAg
ICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoY3JlYXRlUHJpdmF0ZU9iamVjdCk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3RGVza3RvcFByaXZhdGU6OlFRdWlja1dlYlZpZXdEZXNrdG9wUHJpdmF0
ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpRUXVpY2tXZWJWaWV3VG91
Y2hQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6On5RUXVpY2tX
ZWJWaWV3VG91Y2hQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVp
Y2tXZWJWaWV3UHJpdmF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6flFRdWlj
a1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFs
aXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdEZXNrdG9wUHJpdmF0ZTo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OmxvYWREaWRDb21taXQpOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6ZGlkRmluaXNoRmlyc3ROb25FbXB0eUxheW91dCk6
CisgICAgICAgIChRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpfcV9zdXNwZW5kKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6Ol9xX3Jlc3VtZSk6CisgICAgICAgIChRUXVp
Y2tXZWJWaWV3VG91Y2hQcml2YXRlOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
QW5kU2NhbGUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlOjp1cGRhdGVW
aWV3cG9ydFNpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6dXBkYXRl
Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OlBvc3RU
cmFuc2l0aW9uU3RhdGU6OmFwcGx5KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWw6OnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cik6CisgICAgICAgIFRoZSBzd2l0
Y2ggaXMgbm93IGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQgaGFzIHRvIGJlIGNhbGxlZCBiZWZvcmUg
YSBXZWJWaWV3IGlzIGNyZWF0ZWQuIFRoZSBzd2l0Y2ggY2FuIGhhdmUgaXQncyBkZWZhdWx0IGRl
ZmluZWQgYnkgdGhlIGRlcGxveWluZyBwbGF0Zm9ybS4KKyAgICAgICAgKFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw6OnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cik6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3OjpRUXVpY2tXZWJWaWV3KToKKyAgICAgICAgT24gY3JlYXRpb24gb2YgUVF1
aWNrV2ViVmlldywgdGhlIHN0YXRpYyBib29sZWFuIGlzIHJlYWQgdG8ga25vdyBpZiB3ZSB3YW50
IGEgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZSBvciBhIFFRdWlja1dlYlZpZXdEZXNrdG9wUHJp
dmF0ZS4KKyAgICAgICAgKFFRdWlja1dlYlZpZXc6Omdlb21ldHJ5Q2hhbmdlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJp
dmF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZENvbW1pdCk6Cisg
ICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNoRmlyc3ROb25FbXB0eUxheW91
dCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp2aWV3cG9ydEludGVyYWN0
aW9uRW5naW5lKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVWaWV3cG9y
dFNpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3N1c3BlbmQpOgorICAg
ICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3Jlc3VtZSk6CisgICAgICAgIChRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJW
aWV3RGVza3RvcFByaXZhdGUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZSk6
CisgICAgICAgIChRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjp2aWV3cG9ydEludGVyYWN0aW9u
RW5naW5lKToKKyAgICAgICAgKFBvc3RUcmFuc2l0aW9uU3RhdGUpOgorICAgICAgICAoUVF1aWNr
V2ViVmlld1RvdWNoUHJpdmF0ZTo6UG9zdFRyYW5zaXRpb25TdGF0ZTo6UG9zdFRyYW5zaXRpb25T
dGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcDoK
KyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86OmN1cnJlbnRTY2FsZSk6CisgICAgICAgIChRV2Vi
Vmlld3BvcnRJbmZvOjpkZXZpY2VQaXhlbFJhdGlvKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydElu
Zm86OmluaXRpYWxTY2FsZSk6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjptaW5pbXVtU2Nh
bGUpOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6bWF4aW11bVNjYWxlKToKKyAgICAgICAg
KFFXZWJWaWV3cG9ydEluZm86OmlzU2NhbGFibGUpOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5m
bzo6bGF5b3V0U2l6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9EZXNrdG9wQmVoYXZpb3IvRGVza3RvcFdlYlZpZXcucW1sOiBSZW1vdmVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVt
U2VsZWN0b3IucW1sOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9pdGVtU2VsZWN0b3IucW1sLgorICAgICAgICBN
b3ZlZCB0byBEZXNrdG9wQmVoYXZpb3IgaW5zdGVhZCBvZiB1c2luZyBhIERlc2t0b3BXZWJWaWV3
IHRvIHdvcmthcm91bmQgdGhlIHRvdWNoIGV2ZW50IGxpbWl0YXRpb24uCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2xpbmtIb3Zl
cmVkLnFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0
b3BCZWhhdmlvci90c3RfbG9hZEh0bWwucW1sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9tZXNzYWdpbmcucW1sOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9u
YXZpZ2F0aW9uUmVxdWVzdGVkLnFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL3FtbHRlc3RzLkRlc2t0b3BCZWhhdmlvci5wcm86IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMuV2ViVmlldy5wcm86IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
cW1sdGVzdHMucHJvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
cW1sdGVzdHMucHJvOgorICAgICAgICBTcGxpdCBxbWx0ZXN0cyBpbiB0d28gZXhlY3V0YWJsZXMs
IHRzdF9xbWx0ZXN0c19EZXNrdG9wQmVoYXZpb3IgYW5kIHRzdF9xbWx0ZXN0c19XZWJWaWV3LiBU
aGUgZm9ybWVyIGlzIHJ1bm5pbmcgd2l0aCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvciBh
bmQgdGhlIGxhdGVyIGlzbid0LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvdHN0X3FtbHRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoUXRXZWJQYWdlRXZl
bnRIYW5kbGVyOjpRdFdlYlBhZ2VFdmVudEhhbmRsZXIpOgorCisyMDEyLTAyLTAyICBKb2NlbHlu
IFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKICAgICAgICAgW1F0XSBS
ZW5hbWUgY29udGVudCogdG8gY29udGVudHMqIGluIFFRdWlja1dlYlBhZ2UuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYyOQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAppbmRleCBkMTAx
ZDgyZDg4NDFjNGI1OTkyMGNkODJiNGFhMDgzN2I0NTY1OTNmLi4yNWY2MjFmYWM1YmExYTZlN2Ji
N2U0MzI1MGMxNTAyOWU1ZDUyZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKQEAgLTUxLDE3ICs1MSw2IEBAIFF0U0dVcGRhdGVR
dWV1ZSAqUVF1aWNrV2ViUGFnZTo6c2NlbmVHcmFwaFVwZGF0ZVF1ZXVlKCkgY29uc3QKICAgICBy
ZXR1cm4gJmQtPnNnVXBkYXRlUXVldWU7CiB9CiAKLXZvaWQgUVF1aWNrV2ViUGFnZTo6Z2VvbWV0
cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiYgb2xkR2Vv
bWV0cnkpCi17Ci0gICAgUVF1aWNrSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBv
bGRHZW9tZXRyeSk7Ci0KLSAgICBpZiAoIWQtPnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRH
ZW9tZXRyeS5zaXplKCkpCi0gICAgICAgIGQtPnNldERyYXdpbmdBcmVhU2l6ZShuZXdHZW9tZXRy
eS5zaXplKCkudG9TaXplKCkpOwotfQotCiBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6UVF1aWNrV2Vi
UGFnZVByaXZhdGUoUVF1aWNrV2ViUGFnZSogcSwgUVF1aWNrV2ViVmlldyogdmlld3BvcnRJdGVt
KQogICAgIDogcShxKQogICAgICwgdmlld3BvcnRJdGVtKHZpZXdwb3J0SXRlbSkKQEAgLTcwLDcg
KzU5LDYgQEAgUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBhZ2VQcml2YXRlKFFRdWlj
a1dlYlBhZ2UqIHEsIFFRdWlja1dlYlZpZXcqIHZpZXcKICAgICAsIHBhaW50aW5nSXNJbml0aWFs
aXplZChmYWxzZSkKICAgICAsIG1fcGFpbnROb2RlKDApCiAgICAgLCBjb250ZW50c1NjYWxlKDEp
Ci0gICAgLCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoZmFsc2UpCiB7CiB9CiAKQEAg
LTIzNiwxNiArMjI0LDYgQEAgUVNHTm9kZSogUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2Rl
KFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEqKQogICAgIHJldHVybiBwcm94
eU5vZGU7CiB9CiAKLWJvb2wgUVF1aWNrV2ViUGFnZTo6dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJl
aGF2aW91cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQtPnVzZVRyYWRpdGlvbmFsRGVza3RvcEJl
aGF2aW91cjsKLX0KLQotdm9pZCBRUXVpY2tXZWJQYWdlOjpzZXRVc2VzVHJhZGl0aW9uYWxEZXNr
dG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQotewotICAgIGQtPnVzZVRyYWRpdGlvbmFsRGVza3Rv
cEJlaGF2aW91ciA9IGVuYWJsZTsKLX0KLQogUXRXZWJQYWdlRXZlbnRIYW5kbGVyKiBRUXVpY2tX
ZWJQYWdlOjpldmVudEhhbmRsZXIoKSBjb25zdAogewogICAgIHJldHVybiBkLT5ldmVudEhhbmRs
ZXIuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJwYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZV9wLmgKaW5kZXggN2M4NmVmMzdhNDQ2MzNhYmMwNmJhMTI0YTQ0YWVhMWMxZTgzN2Qz
Ni4uOGM3MTBjM2JjNjhmZGJhNzdkM2Y3MTYyYmFjN2NiZjc4ZTA2ZTVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCkBAIC00OSwx
NiArNDksMTIgQEAgcHVibGljOgogICAgIFFUcmFuc2Zvcm0gdHJhbnNmb3JtRnJvbUl0ZW0oKSBj
b25zdDsKICAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybVRvSXRlbSgpIGNvbnN0OwogCi0gICAgYm9v
bCB1c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRV
c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKTsKLQogICAgIFF0V2Vi
UGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVyKCkgY29uc3Q7CiAKICAgICAvLyBJbnRlcm5h
bC4gVG8gYmUgcmVtb3ZlZCBzb29uLgogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1ZXVlKiBzY2Vu
ZUdyYXBoVXBkYXRlUXVldWUoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAgICAgdmly
dHVhbCBRU0dOb2RlKiB1cGRhdGVQYWludE5vZGUoUVNHTm9kZSosIFVwZGF0ZVBhaW50Tm9kZURh
dGEqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2VicGFnZV9wX3AuaAppbmRleCA1NzliMmRkMDhhOWVjZTViN2Q4NWE3NGEyZDIx
MjAxMzE0YmQ2M2U1Li44OGM3MWVlOGQ2MTNhNzBkZWQ5MzIxM2ZlYjQ1ZjhkMjUzYjM4MTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2Vf
cF9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdl
X3BfcC5oCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoKIAogICAgIFFTaXplRiBjb250ZW50c1Np
emU7CiAgICAgcXJlYWwgY29udGVudHNTY2FsZTsKLSAgICBib29sIHVzZVRyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cjsKIH07CiAKICNlbmRpZiAvLyBxcXVpY2t3ZWJwYWdlX3BfcF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRl
eCA2NDg1YmY2OTI4ODNlNDg1MTE5NmJhMzJiMjkyMjEwNWM4MDIyZTZiLi45NzI1MWRkNzRkZjUx
N2ZiNzBmOGNjN2Q2OWI2MGM5MjU0NzdmNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTU1LDYgKzU1LDM3IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgYm9vbCBzVXNlVHJhZGl0aW9uYWxEZXNr
dG9wQmVoYXZpb3VyID0gZmFsc2U7CisKK3N0YXRpYyBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogY3Jl
YXRlUHJpdmF0ZU9iamVjdChRUXVpY2tXZWJWaWV3KiBwdWIpCit7CisgICAgaWYgKHNVc2VUcmFk
aXRpb25hbERlc2t0b3BCZWhhdmlvdXIpCisgICAgICAgIHJldHVybiBuZXcgUVF1aWNrV2ViVmll
d0Rlc2t0b3BQcml2YXRlKHB1Yik7CisgICAgcmV0dXJuIG5ldyBRUXVpY2tXZWJWaWV3VG91Y2hQ
cml2YXRlKHB1Yik7Cit9CisKK1FRdWlja1dlYlZpZXdEZXNrdG9wUHJpdmF0ZTo6UVF1aWNrV2Vi
Vmlld0Rlc2t0b3BQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KQorICAgIDogUVF1aWNr
V2ViVmlld1ByaXZhdGUodmlld3BvcnQpCit7Cit9CisKK1FRdWlja1dlYlZpZXdUb3VjaFByaXZh
dGU6OlFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGUoUVF1aWNrV2ViVmlldyogdmlld3BvcnQpCisg
ICAgOiBRUXVpY2tXZWJWaWV3UHJpdmF0ZSh2aWV3cG9ydCkKKyAgICAsIGludGVyYWN0aW9uRW5n
aW5lKG5ldyBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUodmlld3BvcnQsIHBhZ2VWaWV3LmRh
dGEoKSkpCisgICAgLCBwb3N0VHJhbnNpdGlvblN0YXRlKGFkb3B0UHRyKG5ldyBQb3N0VHJhbnNp
dGlvblN0YXRlKHRoaXMpKSkKKyAgICAsIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZShmYWxzZSkK
KyAgICAsIHBhZ2VJc1N1c3BlbmRlZChmYWxzZSkKK3sKKyAgICBRT2JqZWN0Ojpjb25uZWN0KGlu
dGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRTdXNwZW5kUmVxdWVzdGVkKCkp
LCB2aWV3cG9ydCwgU0xPVChfcV9zdXNwZW5kKCkpKTsKKyAgICBRT2JqZWN0Ojpjb25uZWN0KGlu
dGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRSZXN1bWVSZXF1ZXN0ZWQoKSks
IHZpZXdwb3J0LCBTTE9UKF9xX3Jlc3VtZSgpKSk7CisgICAgUU9iamVjdDo6Y29ubmVjdChpbnRl
cmFjdGlvbkVuZ2luZS5kYXRhKCksIFNJR05BTCh2aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFu
Z2VkKGNvbnN0IFFQb2ludEYmKSksIHZpZXdwb3J0LCBTTE9UKF9xX3ZpZXdwb3J0VHJhamVjdG9y
eVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSk7Cit9CisKK1FRdWlja1dlYlZpZXdUb3Vj
aFByaXZhdGU6On5RUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlKCkKK3sKKyAgICBpbnRlcmFjdGlv
bkVuZ2luZS0+ZGlzY29ubmVjdCgpOworfQorCiBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNr
V2ViVmlld1ByaXZhdGUoUVF1aWNrV2ViVmlldyogdmlld3BvcnQpCiAgICAgOiBxX3B0cih2aWV3
cG9ydCkKICAgICAsIGFsZXJ0RGlhbG9nKDApCkBAIC02Myw5ICs5NCw2IEBAIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCkK
ICAgICAsIGF1dGhlbnRpY2F0aW9uRGlhbG9nKDApCiAgICAgLCBjZXJ0aWZpY2F0ZVZlcmlmaWNh
dGlvbkRpYWxvZygwKQogICAgICwgaXRlbVNlbGVjdG9yKDApCi0gICAgLCBwb3N0VHJhbnNpdGlv
blN0YXRlKGFkb3B0UHRyKG5ldyBQb3N0VHJhbnNpdGlvblN0YXRlKHRoaXMpKSkKLSAgICAsIGlz
VHJhbnNpdGlvbmluZ1RvTmV3UGFnZShmYWxzZSkKLSAgICAsIHBhZ2VJc1N1c3BlbmRlZChmYWxz
ZSkKICAgICAsIG1fbmF2aWdhdG9yUXRPYmplY3RFbmFibGVkKGZhbHNlKQogICAgICwgbV9yZW5k
ZXJUb09mZnNjcmVlbkJ1ZmZlcihmYWxzZSkKIHsKQEAgLTc2LDggKzEwNCw2IEBAIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9y
dCkKIAogUVF1aWNrV2ViVmlld1ByaXZhdGU6On5RUXVpY2tXZWJWaWV3UHJpdmF0ZSgpCiB7Ci0g
ICAgaWYgKGludGVyYWN0aW9uRW5naW5lKQotICAgICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+ZGlz
Y29ubmVjdCgpOwogICAgIHdlYlBhZ2VQcm94eS0+Y2xvc2UoKTsKIH0KIApAQCAtMTA2LDE1ICsx
MzIsMTIgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGEKICAgICBRT2JqZWN0Ojpjb25uZWN0KHFf
cHRyLCBTSUdOQUwodXJsQ2hhbmdlZChRVXJsKSksIGljb25EYXRhYmFzZSwgU0xPVChyZXF1ZXN0
SWNvbkZvclBhZ2VVUkwoUVVybCkpKTsKIAogICAgIC8vIEFueSBwYWdlIHNldHRpbmcgc2hvdWxk
IHByZWZlcnJhYmxlIGJlIHNldCBiZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UuCi0gICAgc2V0VXNl
VHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGZhbHNlKTsKICAgICB3ZWJQYWdlUHJveHktPnBh
Z2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZCh0cnVlKTsKICAgICB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKIAogICAgIHBhZ2VDbGllbnQuaW5pdGlhbGl6
ZShxX3B0ciwgcGFnZVZpZXdQcml2YXRlLT5ldmVudEhhbmRsZXIuZGF0YSgpLCAmdW5kb0NvbnRy
b2xsZXIpOwogICAgIHdlYlBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKLQotICAgIC8v
IFRyaWdnZXIgc2V0dGluZyBvZiBjb3JyZWN0IHZpc2liaWxpdHkgZmxhZ3MgYWZ0ZXIgZXZlcnl0
aGluZyB3YXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZC4KLSAgICBfcV9vblZpc2libGVDaGFu
Z2VkKCk7CisgICAgdXBkYXRlVmlld3BvcnRTaXplKCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmVuYWJsZU1vdXNlRXZlbnRzKCkKQEAgLTEzMSwyOCArMTU0LDIzIEBAIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpc2FibGVNb3VzZUV2ZW50cygpCiAgICAgcS0+c2V0QWNj
ZXB0SG92ZXJFdmVudHMoZmFsc2UpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpp
bml0aWFsaXplRGVza3RvcChRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCkKK3ZvaWQgUVF1aWNrV2Vi
Vmlld0Rlc2t0b3BQcml2YXRlOjppbml0aWFsaXplKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci0gICAgaWYgKGludGVyYWN0aW9uRW5naW5l
KSB7Ci0gICAgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgp
LCBTSUdOQUwoY29udGVudFN1c3BlbmRSZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX3N1
c3BlbmQoKSkpOwotICAgICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGludGVyYWN0aW9uRW5naW5l
LmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRSZXN1bWVSZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9U
KF9xX3Jlc3VtZSgpKSk7Ci0gICAgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoaW50ZXJhY3Rpb25F
bmdpbmUuZGF0YSgpLCBTSUdOQUwodmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25z
dCBRUG9pbnRGJikpLCB2aWV3cG9ydCwgU0xPVChfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JD
aGFuZ2VkKGNvbnN0IFFQb2ludEYmKSkpOwotICAgIH0KLSAgICBpbnRlcmFjdGlvbkVuZ2luZS5y
ZXNldCgwKTsKLSAgICBwYWdlVmlldy0+ZC0+ZXZlbnRIYW5kbGVyLT5zZXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKDApOworICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKGNv
bnRleHRSZWYsIHBhZ2VHcm91cFJlZik7CiAgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKLSAgICB1
cGRhdGVEZXNrdG9wVmlld3BvcnRTaXplKCk7CisKKyAgICAvLyBUcmlnZ2VyIHNldHRpbmcgb2Yg
Y29ycmVjdCB2aXNpYmlsaXR5IGZsYWdzIGFmdGVyIGV2ZXJ5dGhpbmcgd2FzIGFsbG9jYXRlZCBh
bmQgaW5pdGlhbGl6ZWQuCisgICAgX3Ffb25WaXNpYmxlQ2hhbmdlZCgpOwogfQogCi12b2lkIFFR
dWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplVG91Y2goUVF1aWNrV2ViVmlldyogdmlld3Bv
cnQpCit2b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKLSAgICBpbnRl
cmFjdGlvbkVuZ2luZS5yZXNldChuZXcgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKHZpZXdw
b3J0LCBwYWdlVmlldy5kYXRhKCkpKTsKLSAgICBwYWdlVmlldy0+ZC0+ZXZlbnRIYW5kbGVyLT5z
ZXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKGludGVyYWN0aW9uRW5naW5lLmRhdGEoKSk7Ci0g
ICAgZGlzYWJsZU1vdXNlRXZlbnRzKCk7Ci0gICAgUU9iamVjdDo6Y29ubmVjdChpbnRlcmFjdGlv
bkVuZ2luZS5kYXRhKCksIFNJR05BTChjb250ZW50U3VzcGVuZFJlcXVlc3RlZCgpKSwgdmlld3Bv
cnQsIFNMT1QoX3Ffc3VzcGVuZCgpKSk7Ci0gICAgUU9iamVjdDo6Y29ubmVjdChpbnRlcmFjdGlv
bkVuZ2luZS5kYXRhKCksIFNJR05BTChjb250ZW50UmVzdW1lUmVxdWVzdGVkKCkpLCB2aWV3cG9y
dCwgU0xPVChfcV9yZXN1bWUoKSkpOwotICAgIFFPYmplY3Q6OmNvbm5lY3QoaW50ZXJhY3Rpb25F
bmdpbmUuZGF0YSgpLCBTSUdOQUwodmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25z
dCBRUG9pbnRGJikpLCB2aWV3cG9ydCwgU0xPVChfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JD
aGFuZ2VkKGNvbnN0IFFQb2ludEYmKSkpOwotICAgIHVwZGF0ZVRvdWNoVmlld3BvcnRTaXplKCk7
CisgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUoY29udGV4dFJlZiwgcGFnZUdy
b3VwUmVmKTsKKyAgICB3ZWJQYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOworICAg
IHBhZ2VWaWV3LT5ldmVudEhhbmRsZXIoKS0+c2V0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZShp
bnRlcmFjdGlvbkVuZ2luZS5kYXRhKCkpOworCisgICAgLy8gVHJpZ2dlciBzZXR0aW5nIG9mIGNv
cnJlY3QgdmlzaWJpbGl0eSBmbGFncyBhZnRlciBldmVyeXRoaW5nIHdhcyBhbGxvY2F0ZWQgYW5k
IGluaXRpYWxpemVkLgorICAgIF9xX29uVmlzaWJsZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6c2V0TmVlZHNEaXNwbGF5KCkKQEAgLTE2OSwyMiArMTg3LDE2IEBA
IHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldE5lZWRzRGlzcGxheSgpCiAgICAgcS0+cGFn
ZSgpLT51cGRhdGUoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZENv
bW1pdCgpCit2b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OmxvYWREaWRDb21taXQoKQog
ewogICAgIC8vIER1ZSB0byBlbnRlcmluZyBwcm92aXNpb25hbCBsb2FkIGJlZm9yZSBjb21taXR0
aW5nLCB3ZQogICAgIC8vIG1pZ2h0IGFjdHVhbGx5IGJlIHN1c3BlbmRlZCBoZXJlLgogCi0gICAg
aWYgKHBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkpCi0gICAgICAg
IHJldHVybjsKLQogICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IHRydWU7CiB9CiAKLXZv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZEZpbmlzaEZpcnN0Tm9uRW1wdHlMYXlvdXQoKQor
dm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5
b3V0KCkKIHsKLSAgICBpZiAocGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlv
dXIoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFwYWdlSXNTdXNwZW5kZWQpIHsKICAg
ICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlID0gZmFsc2U7CiAgICAgICAgIHBvc3RUcmFu
c2l0aW9uU3RhdGUtPmFwcGx5KCk7CkBAIC0yMDAsMTIgKzIxMiwxMiBAQCB2b2lkIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpfcV9vbkljb25DaGFuZ2VkRm9yUGFnZVVSTChjb25zdCBRVXJsJiBwYWdl
VVJMLCBjb25zdAogICAgIHNldEljb24oaWNvblVSTCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6Ol9xX3N1c3BlbmQoKQordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpf
cV9zdXNwZW5kKCkKIHsKICAgICBwYWdlSXNTdXNwZW5kZWQgPSB0cnVlOwogfQogCi12b2lkIFFR
dWlja1dlYlZpZXdQcml2YXRlOjpfcV9yZXN1bWUoKQordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQ
cml2YXRlOjpfcV9yZXN1bWUoKQogewogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IGZhbHNlOwogCkBA
IC0yMTcsMTIgKzIyOSw5IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3Jlc3VtZSgp
CiAgICAgdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKTsKIH0KIAotdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBuZXdT
aXplKQordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpkaWRDaGFuZ2VDb250ZW50c1Np
emUoY29uc3QgUVNpemUmIG5ld1NpemUpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAg
IGlmIChwYWdlVmlldy0+dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpKQotICAgICAg
ICByZXR1cm47Ci0KICAgICAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBoYW5kbGUgc3Vz
cGVuZCBoZXJlIGFzIHdlbGwKICAgICBpZiAoaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlKSB7CiAg
ICAgICAgIHBvc3RUcmFuc2l0aW9uU3RhdGUtPmNvbnRlbnRzU2l6ZSA9IG5ld1NpemU7CkBAIC0y
MzAsMTQgKzIzOSwxMSBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUpCiAgICAgfQogCiAgICAgcGFnZVZpZXctPnNl
dENvbnRlbnRzU2l6ZShuZXdTaXplKTsKLSAgICBxLT5tX2V4cGVyaW1lbnRhbC0+dmlld3BvcnRJ
bmZvKCktPmRpZFVwZGF0ZUNvbnRlbnRzU2l6ZSgpOworICAgIHEtPmV4cGVyaW1lbnRhbCgpLT52
aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ29udGVudHNTaXplKCk7CiB9CiAKLXZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncykKK3ZvaWQgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0
ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIGlmIChwYWdlVmlldy0+dXNlc1RyYWRpdGlvbmFsRGVza3Rv
cEJlaGF2aW91cigpKQotICAgICAgICByZXR1cm47Ci0KICAgICB2aWV3cG9ydEFyZ3VtZW50cyA9
IGFyZ3M7CiAKICAgICBpZiAoaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlKQpAQCAtMjUxLDExICsy
NTcsOCBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExp
c3QoKQogICAgIG5hdmlnYXRpb25IaXN0b3J5LT5kLT5yZXNldCgpOwogfQogCi12b2lkIFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQmIHBvcykK
K3ZvaWQgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29u
c3QgUVBvaW50JiBwb3MpCiB7Ci0gICAgaWYgKHBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNr
dG9wQmVoYXZpb3VyKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChpc1RyYW5zaXRpb25p
bmdUb05ld1BhZ2UpIHsKICAgICAgICAgcG9zdFRyYW5zaXRpb25TdGF0ZS0+cG9zaXRpb24gPSBw
b3M7CiAgICAgICAgIHJldHVybjsKQEAgLTI2Nyw3ICsyNzAsNyBAQCB2b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQmIHBvcykKIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgZW1pdCBxX3B0
ci0+bmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgpOwotICAgIHBhZ2VWaWV3LT5kLT5ldmVudEhhbmRs
ZXItPnJlc2V0R2VzdHVyZVJlY29nbml6ZXJzKCk7CisgICAgcGFnZVZpZXctPmV2ZW50SGFuZGxl
cigpLT5yZXNldEdlc3R1cmVSZWNvZ25pemVycygpOwogICAgIFdlYkNvcmU6OktVUkwgdXJsKFdl
YkNvcmU6OlBhcnNlZFVSTFN0cmluZywgd2ViUGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkp
OwogICAgIHFXYXJuaW5nKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBj
cmFzaCBvbiAnJXMnLiIsIHFQcmludGFibGUoUVVybCh1cmwpLnRvU3RyaW5nKFFVcmw6OlJlbW92
ZVVzZXJJbmZvKSkpOwogfQpAQCAtMjk4LDcgKzMwMSw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKICAg
ICBjb250ZXh0LT5kb3dubG9hZE1hbmFnZXIoKS0+YWRkRG93bmxvYWQoZG93bmxvYWQsIGRvd25s
b2FkSXRlbSk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpc2libGVD
b250ZW50UmVjdEFuZFNjYWxlKCkKK3ZvaWQgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6dXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKQogewogICAgIERyYXdpbmdBcmVhUHJveHkq
IGRyYXdpbmdBcmVhID0gd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOwogICAgIGlmICghZHJh
d2luZ0FyZWEpCkBAIC0zMTMsNyArMzE2LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKQogCiAgICAgLy8gRklYTUU6IE9uY2Ug
d2Ugc3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUsIHRoaXMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50
aWwgdGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZC4KICAgICB3ZWJQ
YWdlUHJveHktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGFsaWduZWRWaXNpYmxlQ29udGVu
dFJlY3QpOwotICAgIHEtPm1fZXhwZXJpbWVudGFsLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRl
Q3VycmVudFNjYWxlKCk7CisgICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdwb3J0SW5mbygpLT5k
aWRVcGRhdGVDdXJyZW50U2NhbGUoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
X3Ffdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJiB0cmFqZWN0
b3J5VmVjdG9yKQpAQCAtMzQwLDE5ICszNDMsMTggQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6X3Ffb25SZWNlaXZlZFJlc3BvbnNlRnJvbURvd25sb2FkKFFXZWJEb3dubG9hZEl0ZW0qIGQK
ICAgICBlbWl0IHEtPmV4cGVyaW1lbnRhbCgpLT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZEl0
ZW0pOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVEZXNrdG9wVmlld3Bv
cnRTaXplKCkKK3ZvaWQgUVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlOjp1cGRhdGVWaWV3cG9y
dFNpemUoKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBRU2l6ZSB2aWV3cG9ydFNp
emUgPSBxLT5ib3VuZGluZ1JlY3QoKS5zaXplKCkudG9TaXplKCk7Ci0gICAgcGFnZVZpZXctPnNl
dFdpZHRoKHZpZXdwb3J0U2l6ZS53aWR0aCgpKTsKLSAgICBwYWdlVmlldy0+c2V0SGVpZ2h0KHZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgcGFnZVZpZXctPnNldENvbnRlbnRzU2l6ZSh2aWV3
cG9ydFNpemUpOwogICAgIC8vIFRoZSBmaXhlZCBsYXlvdXQgaXMgaGFuZGxlZCBieSB0aGUgRnJh
bWVWaWV3IGFuZCB0aGUgZHJhd2luZyBhcmVhIGRvZXNuJ3QgYmVoYXZlIGRpZmZlcmVudGx5Ci0g
ICAgLy8gd2V0aGVyIGl0cyBmaXhlZCBvciBub3QuIFdlIHN0aWxsIG5lZWQgdG8gdGVsbCB0aGUg
ZHJhd2luZyBhcmVhIHdoaWNoIHBhcnQgb2YgaXQKKyAgICAvLyB3aGV0aGVyIGl0cyBmaXhlZCBv
ciBub3QuIFdlIHN0aWxsIG5lZWQgdG8gdGVsbCB0aGUgZHJhd2luZyBhcmVhIHdoaWNoIHBhcnQg
b2YgaXQKICAgICAvLyBoYXMgdG8gYmUgcmVuZGVyZWQgb24gdGlsZXMsIGFuZCBpbiBkZXNrdG9w
IG1vZGUgaXQncyBhbGwgb2YgaXQuCiAgICAgd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5z
ZXRWaXNpYmxlQ29udGVudHNSZWN0QW5kU2NhbGUoSW50UmVjdChJbnRQb2ludCgpLCB2aWV3cG9y
dFNpemUpLCAxKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVG91Y2hW
aWV3cG9ydFNpemUoKQordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjp1cGRhdGVWaWV3
cG9ydFNpemUoKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBRU2l6ZSB2aWV3cG9y
dFNpemUgPSBxLT5ib3VuZGluZ1JlY3QoKS5zaXplKCkudG9TaXplKCk7CkBAIC0zNjgsNyArMzcw
LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVG91Y2hWaWV3cG9ydFNpemUo
KQogICAgIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKCk7CiB9CiAKLXZvaWQgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OlBvc3RUcmFuc2l0aW9uU3RhdGU6OmFwcGx5KCkKK3ZvaWQgUVF1
aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6UG9zdFRyYW5zaXRpb25TdGF0ZTo6YXBwbHkoKQogewog
ICAgIHAtPmludGVyYWN0aW9uRW5naW5lLT5yZXNldCgpOwogICAgIHAtPmludGVyYWN0aW9uRW5n
aW5lLT5hcHBseUNvbnN0cmFpbnRzKHAtPmNvbXB1dGVWaWV3cG9ydENvbnN0cmFpbnRzKCkpOwpA
QCAtNTYzLDIwICs1NjUsNiBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9vbk9wZW5Q
YW5lbEZpbmlzaGVkKGludCByZXN1bHQpCiAgICAgZmlsZURpYWxvZyA9IDA7CiB9CiAKLXZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihi
b29sIGVuYWJsZSkKLXsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0KLSAgICAvLyBEbyBub3Qg
Z3VhcmQsIHRlc3RpbmcgZm9yIHRoZSBzYW1lIHZhbHVlLCBhcyB3ZSBjYWxsIHRoaXMgZnJvbSB0
aGUgY29uc3RydWN0b3IuCi0KLSAgICB3ZWJQYWdlUHJveHktPnNldFVzZUZpeGVkTGF5b3V0KCFl
bmFibGUpOwotICAgIHBhZ2VWaWV3LT5zZXRVc2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Vy
KGVuYWJsZSk7Ci0gICAgaWYgKGVuYWJsZSkKLSAgICAgICAgaW5pdGlhbGl6ZURlc2t0b3AocSk7
Ci0gICAgZWxzZQotICAgICAgICBpbml0aWFsaXplVG91Y2gocSk7Ci19Ci0KIHZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OnNldFZpZXdJbkF0dGFjaGVkUHJvcGVydGllcyhRT2JqZWN0KiBvYmpl
Y3QpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwpAQCAtNjcyLDE2ICs2NjAsNiBAQCBRUXVp
Y2tXZWJWaWV3RXhwZXJpbWVudGFsOjp+UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCgpCiB7CiB9
CiAKLXZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0VXNlVHJhZGl0aW9uYWxEZXNr
dG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQotewotICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLQot
ICAgIGlmIChlbmFibGUgPT0gZC0+cGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhh
dmlvdXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZC0+c2V0VXNlVHJhZGl0aW9uYWxEZXNr
dG9wQmVoYXZpb3VyKGVuYWJsZSk7Ci19Ci0KIHZvaWQgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRh
bDo6c2V0UmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoYm9vbCBlbmFibGUpCiB7CiAgICAgUV9EKFFR
dWlja1dlYlZpZXcpOwpAQCAtNjk0LDYgKzY3MiwxNiBAQCBib29sIFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWw6OnJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gZC0+
cmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoKTsKIH0KIAordm9pZCBRUXVpY2tXZWJWaWV3RXhwZXJp
bWVudGFsOjpzZXRVc2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoYm9vbCBlbmFibGUpCit7
CisgICAgc1VzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91ciA9IGVuYWJsZTsKK30KKworYm9v
bCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlv
dXIoKQoreworICAgIHJldHVybiBzVXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyOworfQor
CiB2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnBvc3RNZXNzYWdlKGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwpAQCAtODAzLDEyICs3OTEs
NiBAQCB2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldEl0ZW1TZWxlY3RvcihRRGVj
bGFyYXRpdmVDb21wb25lbnQqIGl0ZW1TZWxlYwogICAgIGVtaXQgaXRlbVNlbGVjdG9yQ2hhbmdl
ZCgpOwogfQogCi1ib29sIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnVzZVRyYWRpdGlvbmFs
RGVza3RvcEJlaGF2aW91cigpIGNvbnN0Ci17Ci0gICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcp
OwotICAgIHJldHVybiBkLT5wYWdlVmlldy0+dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cigpOwotfQotCiBRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0ZSogUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbDo6c2NoZW1lRGVsZWdhdGVzX0F0KFFEZWNsYXJhdGl2ZUxpc3RQcm9wZXJ0eTxRUXVpY2tV
cmxTY2hlbWVEZWxlZ2F0ZT4qIHByb3BlcnR5LCBpbnQgaW5kZXgpCiB7CiAgICAgY29uc3QgUU9i
amVjdExpc3QgY2hpbGRyZW4gPSBwcm9wZXJ0eS0+b2JqZWN0LT5jaGlsZHJlbigpOwpAQCAtODk2
LDcgKzg3OCw3IEBAIFFRdWlja1dlYlBhZ2UqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnBh
Z2UoKQogCiBRUXVpY2tXZWJWaWV3OjpRUXVpY2tXZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVudCkK
ICAgICA6IFFRdWlja0l0ZW0ocGFyZW50KQotICAgICwgZF9wdHIobmV3IFFRdWlja1dlYlZpZXdQ
cml2YXRlKHRoaXMpKQorICAgICwgZF9wdHIoY3JlYXRlUHJpdmF0ZU9iamVjdCh0aGlzKSkKICAg
ICAsIG1fZXhwZXJpbWVudGFsKG5ldyBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKHRoaXMpKQog
ewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKQEAgLTkwNSw3ICs4ODcsNyBAQCBRUXVpY2tXZWJW
aWV3OjpRUXVpY2tXZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVudCkKIAogUVF1aWNrV2ViVmlldzo6
UVF1aWNrV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmLCBRUXVpY2tJdGVtKiBwYXJlbnQpCiAgICAgOiBRUXVpY2tJdGVtKHBhcmVudCkK
LSAgICAsIGRfcHRyKG5ldyBRUXVpY2tXZWJWaWV3UHJpdmF0ZSh0aGlzKSkKKyAgICAsIGRfcHRy
KGNyZWF0ZVByaXZhdGVPYmplY3QodGhpcykpCiAgICAgLCBtX2V4cGVyaW1lbnRhbChuZXcgUVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbCh0aGlzKSkKIHsKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7
CkBAIC0xMDgxLDEyICsxMDYzLDggQEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpnZW9tZXRyeUNoYW5n
ZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKIHsKICAgICBR
X0QoUVF1aWNrV2ViVmlldyk7CiAgICAgUVF1aWNrSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dl
b21ldHJ5LCBvbGRHZW9tZXRyeSk7Ci0gICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRH
ZW9tZXRyeS5zaXplKCkpIHsKLSAgICAgICAgaWYgKGQtPnBhZ2VWaWV3LT51c2VzVHJhZGl0aW9u
YWxEZXNrdG9wQmVoYXZpb3VyKCkpCi0gICAgICAgICAgICBkLT51cGRhdGVEZXNrdG9wVmlld3Bv
cnRTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGQtPnVwZGF0ZVRvdWNoVmlld3Bv
cnRTaXplKCk7Ci0gICAgfQorICAgIGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0
cnkuc2l6ZSgpKQorICAgICAgICBkLT51cGRhdGVWaWV3cG9ydFNpemUoKTsKIH0KIAogdm9pZCBR
UXVpY2tXZWJWaWV3OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXZlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCBjYWMz
OGM3ZGU3MmRkMTgxMTJhOWE0YjQzZDBiM2E5NGRhM2Y4NWFjLi4xYjk1MGFmNzIxMWU3ODBmODZh
MTJmNTFmMjNlMGExMDBlODgwYWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmgKQEAgLTIxMiw3ICsyMTIsNiBAQCBjbGFzcyBRV0VC
S0lUX0VYUE9SVCBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3Qgewog
ICAgIFFfUFJPUEVSVFkoUURlY2xhcmF0aXZlQ29tcG9uZW50KiBjZXJ0aWZpY2F0ZVZlcmlmaWNh
dGlvbkRpYWxvZyBSRUFEIGNlcnRpZmljYXRlVmVyaWZpY2F0aW9uRGlhbG9nIFdSSVRFIHNldENl
cnRpZmljYXRlVmVyaWZpY2F0aW9uRGlhbG9nIE5PVElGWSBjZXJ0aWZpY2F0ZVZlcmlmaWNhdGlv
bkRpYWxvZ0NoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGl0
ZW1TZWxlY3RvciBSRUFEIGl0ZW1TZWxlY3RvciBXUklURSBzZXRJdGVtU2VsZWN0b3IgTk9USUZZ
IGl0ZW1TZWxlY3RvckNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRV2ViUHJlZmVyZW5jZXMqIHBy
ZWZlcmVuY2VzIFJFQUQgcHJlZmVyZW5jZXMgQ09OU1RBTlQgRklOQUwpCi0gICAgUV9QUk9QRVJU
WShib29sIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91ciBSRUFEIHVzZVRyYWRpdGlvbmFs
RGVza3RvcEJlaGF2aW91ciBXUklURSBzZXRVc2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIp
CiAgICAgUV9QUk9QRVJUWShRV2ViVmlld3BvcnRJbmZvKiB2aWV3cG9ydEluZm8gUkVBRCB2aWV3
cG9ydEluZm8gQ09OU1RBTlQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVMaXN0
UHJvcGVydHk8UVF1aWNrVXJsU2NoZW1lRGVsZWdhdGU+IHVybFNjaGVtZURlbGVnYXRlcyBSRUFE
IHNjaGVtZURlbGVnYXRlcykKICAgICBRX0VOVU1TKE5hdmlnYXRpb25SZXF1ZXN0QWN0aW9uKQpA
QCAtMjM3LDggKzIzNiw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENlcnRpZmljYXRlVmVyaWZp
Y2F0aW9uRGlhbG9nKFFEZWNsYXJhdGl2ZUNvbXBvbmVudCopOwogICAgIFFEZWNsYXJhdGl2ZUNv
bXBvbmVudCogaXRlbVNlbGVjdG9yKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJdGVtU2VsZWN0b3Io
UURlY2xhcmF0aXZlQ29tcG9uZW50Kik7Ci0gICAgYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0b3BC
ZWhhdmlvdXIoKSBjb25zdDsKLSAgICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2
aW91cihib29sIGVuYWJsZSk7CiAKICAgICBRV2ViVmlld3BvcnRJbmZvKiB2aWV3cG9ydEluZm8o
KTsKIApAQCAtMjU3LDYgKzI1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBDKysgb25seQogICAgIGJv
b2wgcmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFJlbmRlclRv
T2Zmc2NyZWVuQnVmZmVyKGJvb2wgZW5hYmxlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRVc2VUcmFk
aXRpb25hbERlc2t0b3BCZWhhdmlvdXIoYm9vbCBlbmFibGUpOworICAgIHN0YXRpYyBib29sIHVz
ZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpOwogCiBwdWJsaWMgUV9TTE9UUzoKICAgICB2
b2lkIGdvQmFja1RvKGludCBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5kZXggOWYyODE3MDFhNWRjN2I4Y2EyNjRm
Y2YzY2ZlZjVmOTkyZjkxOWIxMS4uMGE2NTk1NWM0MTE0NTRiMmY1OGZlNjVmY2MwMzMyMWZmZWY5
YWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wX3AuaApAQCAtNjEsMzIgKzYxLDI3IEBAIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2
YXRlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUVF1aWNrV2ViVmlld1ByaXZhdGUqIGdldChRUXVp
Y2tXZWJWaWV3KiBxKSB7IHJldHVybiBxLT5kX3B0ci5kYXRhKCk7IH0KIAotICAgIFFRdWlja1dl
YlZpZXdQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KTsKICAgICB2aXJ0dWFsIH5RUXVp
Y2tXZWJWaWV3UHJpdmF0ZSgpOwogCi0gICAgdm9pZCBpbml0aWFsaXplKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmID0gMCk7CisgICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYgPSAwLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZVRvdWNoKFFR
dWlja1dlYlZpZXcqIHZpZXdwb3J0KTsKLSAgICB2b2lkIGluaXRpYWxpemVEZXNrdG9wKFFRdWlj
a1dlYlZpZXcqIHZpZXdwb3J0KTsKICAgICB2b2lkIGVuYWJsZU1vdXNlRXZlbnRzKCk7CiAgICAg
dm9pZCBkaXNhYmxlTW91c2VFdmVudHMoKTsKIAotICAgIHZvaWQgbG9hZERpZENvbW1pdCgpOwot
Ci0gICAgdm9pZCBkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5b3V0KCk7Ci0gICAgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMm
IGFyZ3MpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQ29tbWl0KCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaEZpcnN0Tm9uRW1wdHlMYXlvdXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzJiBhcmdzKSB7IH0KICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgpOwog
CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIHZvaWQgdXBkYXRlRGVza3RvcFZp
ZXdwb3J0U2l6ZSgpOworICAgIHZpcnR1YWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2
aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVWaWV3cG9ydFNpemUoKSB7IH0KICAgICB2b2lkIHVwZGF0ZVRvdWNoVmlld3BvcnRT
aXplKCk7CiAgICAgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBjb21w
dXRlVmlld3BvcnRDb25zdHJhaW50cygpOwogCi0gICAgdm9pZCB1cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RBbmRTY2FsZSgpOwotCi0gICAgdm9pZCBfcV9zdXNwZW5kKCk7Ci0gICAgdm9pZCBfcV9y
ZXN1bWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgX3Ffc3VzcGVuZCgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBfcV9yZXN1bWUoKSB7IH0KICAgICB2b2lkIF9xX3ZpZXdwb3J0VHJhamVjdG9yeVZlY3Rv
ckNoYW5nZWQoY29uc3QgUVBvaW50RiYpOwogICAgIHZvaWQgX3Ffb25PcGVuUGFuZWxGaWxlc1Nl
bGVjdGVkKCk7CiAgICAgdm9pZCBfcV9vbk9wZW5QYW5lbEZpbmlzaGVkKGludCByZXN1bHQpOwpA
QCAtMTE0LDMwICsxMDksMTUgQEAgcHVibGljOgogICAgIC8vIFBhZ2VDbGllbnQuCiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lk
IHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKTsKLSAgICB2b2lkIGRpZENo
YW5nZUNvbnRlbnRzU2l6ZShjb25zdCBRU2l6ZSYgbmV3U2l6ZSk7CisgICAgdmlydHVhbCB2b2lk
IHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBuZXdTaXplKSB7IH0KICAg
ICB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7
CiAgICAgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5
KCk7CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSopOwogCi1w
cml2YXRlOgotICAgIC8vIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGNvbGxlY3Rpbmcg
YW5kIGFwcGx5aW5nIGFsbCBwcm9wZXJ0aWVzCi0gICAgLy8gb24gdGhlIHZpZXdwb3J0IGl0ZW0s
IHdoZW4gdHJhbnNpdGlvbmluZyBmcm9tIHBhZ2UgQSB0byBwYWdlIEIgaXMgZmluaXNoZWQuCi0g
ICAgLy8gU2VlIG1vcmUgYXQgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvd2lraS9RdFdlYktpdExh
eW91dEludGVyYWN0aW9uCi0gICAgY2xhc3MgUG9zdFRyYW5zaXRpb25TdGF0ZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBQb3N0VHJhbnNpdGlvblN0YXRlKFFRdWlja1dlYlZpZXdQcml2YXRlKiBw
YXJlbnQpCi0gICAgICAgICAgICA6IHAocGFyZW50KQotICAgICAgICB7IH0KLQotICAgICAgICB2
b2lkIGFwcGx5KCk7Ci0KLSAgICAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGUqIHA7Ci0gICAgICAg
IFFTaXplIGNvbnRlbnRzU2l6ZTsKLSAgICAgICAgUVBvaW50IHBvc2l0aW9uOwotICAgIH07Ci0K
K3Byb3RlY3RlZDoKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3
cG9ydCk7CiAgICAgUmVmUHRyPFF0V2ViQ29udGV4dD4gY29udGV4dDsKICAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJQYWdlUHJveHk+IHdlYlBhZ2VQcm94eTsKIApAQCAtMTUxLDggKzEzMSw2IEBAIHBy
aXZhdGU6CiAgICAgUVNjb3BlZFBvaW50ZXI8UXRXZWJQYWdlVUlDbGllbnQ+IHBhZ2VVSUNsaWVu
dDsKIAogICAgIFFTY29wZWRQb2ludGVyPFFRdWlja1dlYlBhZ2U+IHBhZ2VWaWV3OwotICAgIFFT
Y29wZWRQb2ludGVyPFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZT4gaW50ZXJhY3Rpb25Fbmdp
bmU7Ci0KICAgICBRUXVpY2tXZWJWaWV3KiBxX3B0cjsKIAogICAgIFFEZWNsYXJhdGl2ZUNvbXBv
bmVudCogYWxlcnREaWFsb2c7CkBAIC0xNjMsMTUgKzE0MSw2NCBAQCBwcml2YXRlOgogICAgIFFE
ZWNsYXJhdGl2ZUNvbXBvbmVudCogaXRlbVNlbGVjdG9yOwogCiAgICAgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHM7Ci0gICAgT3duUHRyPFBvc3RUcmFuc2l0aW9u
U3RhdGU+IHBvc3RUcmFuc2l0aW9uU3RhdGU7CiAgICAgUUZpbGVEaWFsb2cqIGZpbGVEaWFsb2c7
CiAgICAgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBvcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
cjsKIAotICAgIGJvb2wgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlOwotICAgIGJvb2wgcGFnZUlz
U3VzcGVuZGVkOwogICAgIGJvb2wgbV9uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQ7CiAgICAgYm9v
bCBtX3JlbmRlclRvT2Zmc2NyZWVuQnVmZmVyOwogICAgIFFVcmwgbV9pY29uVVJMOwogfTsKIAor
Y2xhc3MgUVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlIDogcHVibGljIFFRdWlja1dlYlZpZXdQ
cml2YXRlIHsKKyAgICBRX0RFQ0xBUkVfUFVCTElDKFFRdWlja1dlYlZpZXcpCitwdWJsaWM6Cisg
ICAgUVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiA9IDAs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApOworCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVZpZXdwb3J0U2l6ZSgpOworfTsKKworY2xhc3MgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0
ZSA6IHB1YmxpYyBRUXVpY2tXZWJWaWV3UHJpdmF0ZSB7CisgICAgUV9ERUNMQVJFX1BVQkxJQyhR
UXVpY2tXZWJWaWV3KQorcHVibGljOgorICAgIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGUoUVF1
aWNrV2ViVmlldyogdmlld3BvcnQpOworICAgIHZpcnR1YWwgflFRdWlja1dlYlZpZXdUb3VjaFBy
aXZhdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4
dFJlZiA9IDAsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApOworCisgICAgdmlydHVh
bCB2b2lkIGxvYWREaWRDb21taXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRmlyc3RO
b25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpOworICAgIHZpcnR1
YWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KCkgeyByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpOyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVZpZXdwb3J0U2l6ZSgpOworICAgIHZpcnR1YWwgdm9pZCBfcV9zdXNwZW5kKCk7Cisg
ICAgdmlydHVhbCB2b2lkIF9xX3Jlc3VtZSgpOworCisgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRS
ZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBuZXdTaXplKTsKKworICAgIHZvaWQgdXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKTsKKworcHJpdmF0ZToKKyAgICAvLyBUaGlzIGNs
YXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjb2xsZWN0aW5nIGFuZCBhcHBseWluZyBhbGwgcHJvcGVy
dGllcworICAgIC8vIG9uIHRoZSB2aWV3cG9ydCBpdGVtLCB3aGVuIHRyYW5zaXRpb25pbmcgZnJv
bSBwYWdlIEEgdG8gcGFnZSBCIGlzIGZpbmlzaGVkLgorICAgIC8vIFNlZSBtb3JlIGF0IGh0dHBz
Oi8vdHJhYy53ZWJraXQub3JnL3dpa2kvUXRXZWJLaXRMYXlvdXRJbnRlcmFjdGlvbgorICAgIGNs
YXNzIFBvc3RUcmFuc2l0aW9uU3RhdGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUG9zdFRyYW5z
aXRpb25TdGF0ZShRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlKiBwYXJlbnQpCisgICAgICAgICAg
ICA6IHAocGFyZW50KQorICAgICAgICB7IH0KKworICAgICAgICB2b2lkIGFwcGx5KCk7CisKKyAg
ICAgICAgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZSogcDsKKyAgICAgICAgUVNpemUgY29udGVu
dHNTaXplOworICAgICAgICBRUG9pbnQgcG9zaXRpb247CisgICAgfTsKKworICAgIFFTY29wZWRQ
b2ludGVyPFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZT4gaW50ZXJhY3Rpb25FbmdpbmU7Cisg
ICAgT3duUHRyPFBvc3RUcmFuc2l0aW9uU3RhdGU+IHBvc3RUcmFuc2l0aW9uU3RhdGU7CisgICAg
Ym9vbCBpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2U7CisgICAgYm9vbCBwYWdlSXNTdXNwZW5kZWQ7
Cit9OworCiAjZW5kaWYgLy8gcXF1aWNrd2Vidmlld19wX3BfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAKaW5kZXggMGFlMmIx
ZGJlNDk1YjZmNzUyNDQ2Yzc4Mjc1ZjNmMmU2NWVlMDczYy4uMTQ4YjUwMDkzN2RkNDg3NDk3ZjA5
YjEzODBiZDllNzAzOTMzMjk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2Vidmlld3BvcnRpbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCkBAIC00Myw1OCArNDMsNTggQEAgUVNpemUg
UVdlYlZpZXdwb3J0SW5mbzo6Y29udGVudHNTaXplKCkgY29uc3QKIAogUVZhcmlhbnQgUVdlYlZp
ZXdwb3J0SW5mbzo6Y3VycmVudFNjYWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fd2ViVmlld1By
aXZhdGUtPmludGVyYWN0aW9uRW5naW5lKQotICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyAg
ICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1f
d2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKSkKKyAgICAgICAgcmV0
dXJuIGludGVyYWN0aW9uRW5naW5lLT5jdXJyZW50Q1NTU2NhbGUoKTsKIAotICAgIHJldHVybiBt
X3dlYlZpZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZS0+Y3VycmVudENTU1NjYWxlKCk7Cisg
ICAgcmV0dXJuIFFWYXJpYW50KCk7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmRl
dmljZVBpeGVsUmF0aW8oKSBjb25zdAogewotICAgIGlmICghbV93ZWJWaWV3UHJpdmF0ZS0+aW50
ZXJhY3Rpb25FbmdpbmUpCi0gICAgICAgIHJldHVybiBRVmFyaWFudCgpOworICAgIGlmIChRdFZp
ZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJp
dmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAgICByZXR1cm4gaW50ZXJh
Y3Rpb25FbmdpbmUtPmNvbnN0cmFpbnRzKCkuZGV2aWNlUGl4ZWxSYXRpbzsKIAotICAgIHJldHVy
biBtX3dlYlZpZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5kZXZp
Y2VQaXhlbFJhdGlvOworICAgIHJldHVybiBRVmFyaWFudCgpOwogfQogCiBRVmFyaWFudCBRV2Vi
Vmlld3BvcnRJbmZvOjppbml0aWFsU2NhbGUoKSBjb25zdAogewotICAgIGlmICghbV93ZWJWaWV3
UHJpdmF0ZS0+aW50ZXJhY3Rpb25FbmdpbmUpCi0gICAgICAgIHJldHVybiBRVmFyaWFudCgpOwor
ICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0g
bV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAgICBy
ZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPmNvbnN0cmFpbnRzKCkuaW5pdGlhbFNjYWxlOwogCi0g
ICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5naW5lLT5jb25zdHJhaW50
cygpLmluaXRpYWxTY2FsZTsKKyAgICByZXR1cm4gUVZhcmlhbnQoKTsKIH0KIAogUVZhcmlhbnQg
UVdlYlZpZXdwb3J0SW5mbzo6bWluaW11bVNjYWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fd2Vi
Vmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5naW5lKQotICAgICAgICByZXR1cm4gUVZhcmlhbnQo
KTsKKyAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2lu
ZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKSkKKyAgICAg
ICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jb25zdHJhaW50cygpLm1pbmltdW1TY2FsZTsK
IAotICAgIHJldHVybiBtX3dlYlZpZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3Ry
YWludHMoKS5taW5pbXVtU2NhbGU7CisgICAgcmV0dXJuIFFWYXJpYW50KCk7CiB9CiAKIFFWYXJp
YW50IFFXZWJWaWV3cG9ydEluZm86Om1heGltdW1TY2FsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X3dlYlZpZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZSkKLSAgICAgICAgcmV0dXJuIFFWYXJp
YW50KCk7CisgICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJhY3Rpb25F
bmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkpCisg
ICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5tYXhpbXVtU2Nh
bGU7CiAKLSAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+aW50ZXJhY3Rpb25FbmdpbmUtPmNv
bnN0cmFpbnRzKCkubWF4aW11bVNjYWxlOworICAgIHJldHVybiBRVmFyaWFudCgpOwogfQogCiBR
VmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjppc1NjYWxhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5naW5lKQotICAgICAgICByZXR1cm4gUVZh
cmlhbnQoKTsKKyAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRlcmFjdGlv
bkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUoKSkK
KyAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jb25zdHJhaW50cygpLmlzVXNlclNj
YWxhYmxlOwogCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5naW5l
LT5jb25zdHJhaW50cygpLmlzVXNlclNjYWxhYmxlOworICAgIHJldHVybiBRVmFyaWFudCgpOwog
fQogCiBRVmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjpsYXlvdXRTaXplKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5naW5lKQotICAgICAgICByZXR1
cm4gUVZhcmlhbnQoKTsKKyAgICBpZiAoUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiBpbnRl
cmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUoKSkKKyAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5lLT5jb25zdHJhaW50cygpLmxh
eW91dFNpemU7CiAKLSAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+aW50ZXJhY3Rpb25Fbmdp
bmUtPmNvbnN0cmFpbnRzKCkubGF5b3V0U2l6ZTsKKyAgICByZXR1cm4gUVZhcmlhbnQoKTsKIH0K
IAogdm9pZCBRV2ViVmlld3BvcnRJbmZvOjpkaWRVcGRhdGVDb250ZW50c1NpemUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNr
dG9wQmVoYXZpb3IvRGVza3RvcFdlYlZpZXcucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvRGVza3RvcFdlYlZpZXcucW1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGNlMDkxOGI5N2U3YjVlZWQ0MGJhNTdk
OWY0YThjNTY0ZWZlYzAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVz
a3RvcEJlaGF2aW9yL0Rlc2t0b3BXZWJWaWV3LnFtbAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAs
MCBAQAotaW1wb3J0IFF0UXVpY2sgMi4wCi1pbXBvcnQgUXRXZWJLaXQgMy4wCi1pbXBvcnQgUXRX
ZWJLaXQuZXhwZXJpbWVudGFsIDMuMAotCi1XZWJWaWV3IHsKLSAgICBpZDogY29tcG9uZW50Ci0g
ICAgZXhwZXJpbWVudGFsLnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cjogdHJ1ZQotfQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfaXRlbVNlbGVjdG9yLnFtbCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVt
U2VsZWN0b3IucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjOTZmODhlZjBmMmRmN2FhZDYzZDBjNGEwOGVhNzI2
OGJkYWM1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfaXRlbVNlbGVjdG9yLnFtbApA
QCAtMCwwICsxLDExNyBAQAoraW1wb3J0IFF0UXVpY2sgMi4wCitpbXBvcnQgUXRUZXN0IDEuMAor
aW1wb3J0IFF0V2ViS2l0IDMuMAoraW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAzLjAKKwor
Ly8gRklYTUU6IE1vdmVkIHRvIERlc2t0b3AgdGVzdHMgYmVjYXVzZSB3ZSB3YW50IHRvIGhhdmUg
bW91c2VDbGljaygpIHRvIG9wZW4gdGhlIDxzZWxlY3Q+IHRhZy4gV2UgY2FuIG1vdmUgaXQgYmFj
aworLy8gd2hlbiBUZXN0Q2FzZSBzdGFydHMgc3VwcG9ydGluZyB0b3VjaCBldmVudHMsIHNlZSBo
dHRwczovL2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dzZS9RVEJVRy0yMzA4My4KK1dlYlZp
ZXcgeworICAgIGlkOiB3ZWJWaWV3CisKKyAgICB3aWR0aDogNDAwCisgICAgaGVpZ2h0OiA0MDAK
KworICAgIHByb3BlcnR5IGludCBpbml0aWFsU2VsZWN0aW9uCisgICAgcHJvcGVydHkgaW50IGZp
bmFsU2VsZWN0aW9uCisgICAgcHJvcGVydHkgYm9vbCB1c2VBY2NlcHREaXJlY3RseQorICAgIHBy
b3BlcnR5IGJvb2wgc2VsZWN0b3JMb2FkZWQKKworICAgIGV4cGVyaW1lbnRhbC5pdGVtU2VsZWN0
b3I6IEl0ZW0geworICAgICAgICBDb21wb25lbnQub25Db21wbGV0ZWQ6IHsKKyAgICAgICAgICAg
IGlmIChXZWJWaWV3LnZpZXcuaW5pdGlhbFNlbGVjdGlvbiAhPSAtMSkKKyAgICAgICAgICAgICAg
ICBtb2RlbC5pdGVtcy5zZWxlY3QoV2ViVmlldy52aWV3LmluaXRpYWxTZWxlY3Rpb24pCisKKyAg
ICAgICAgICAgIGlmIChXZWJWaWV3LnZpZXcuZmluYWxTZWxlY3Rpb24gPT0gLTEpCisgICAgICAg
ICAgICAgICAgbW9kZWwucmVqZWN0KCkKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmICh1c2VBY2NlcHREaXJlY3RseSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlbC5h
Y2NlcHQoV2ViVmlldy52aWV3LmZpbmFsU2VsZWN0aW9uKQorICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIG1vZGVsLml0ZW1zLnNlbGVjdChXZWJWaWV3LnZpZXcu
ZmluYWxTZWxlY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIG1vZGVsLmFjY2VwdCgpCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXZWJWaWV3LnZpZXcu
c2VsZWN0b3JMb2FkZWQgPSB0cnVlCisgICAgICAgIH0KKyAgICB9CisKKyAgICBTaWduYWxTcHkg
eworICAgICAgICBpZDogbG9hZFNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAg
c2lnbmFsTmFtZTogImxvYWRTdWNjZWVkZWQiCisgICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAg
ICAgICAgaWQ6IHRpdGxlU3B5CisgICAgICAgIHRhcmdldDogd2ViVmlldworICAgICAgICBzaWdu
YWxOYW1lOiAidGl0bGVDaGFuZ2VkIgorICAgIH0KKworICAgIFRlc3RDYXNlIHsKKyAgICAgICAg
aWQ6IHRlc3QKKyAgICAgICAgbmFtZTogIldlYlZpZXdJdGVtU2VsZWN0b3IiCisgICAgICAgIHdo
ZW46IHdpbmRvd1Nob3duCisKKyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgICAg
IHdlYlZpZXcuaW5pdGlhbFNlbGVjdGlvbiA9IC0xCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmFs
U2VsZWN0aW9uID0gLTEKKyAgICAgICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGlyZWN0bHkgPSBm
YWxzZQorICAgICAgICAgICAgd2ViVmlldy5zZWxlY3RvckxvYWRlZCA9IGZhbHNlCisgICAgICAg
ICAgICBsb2FkU3B5LmNsZWFyKCkKKyAgICAgICAgICAgIHdlYlZpZXcubG9hZChRdC5yZXNvbHZl
ZFVybCgiLi4vY29tbW9uL3NlbGVjdC5odG1sIikpCisgICAgICAgICAgICBsb2FkU3B5LndhaXQo
KQorICAgICAgICAgICAgdGl0bGVTcHkuY2xlYXIoKQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb3Blbkl0ZW1TZWxlY3RvcigpIHsKKyAgICAgICAgICAgIG1vdXNlQ2xpY2sod2ViVmll
dywgMTUsIDE1LCBRdC5MZWZ0QnV0dG9uKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdF9hY2NlcHQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LmZpbmFsU2VsZWN0aW9uID0gMQor
ICAgICAgICAgICAgb3Blbkl0ZW1TZWxlY3RvcigpCisgICAgICAgICAgICB0aXRsZVNweS53YWl0
KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIl9fY2xvc2VkX18iKQorICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9hY2NlcHREaXJlY3RseSgpIHsKKyAgICAg
ICAgICAgIHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAxCisgICAgICAgICAgICB3ZWJWaWV3LnVz
ZUFjY2VwdERpcmVjdGx5ID0gdHJ1ZQorICAgICAgICAgICAgb3Blbkl0ZW1TZWxlY3RvcigpCisg
ICAgICAgICAgICB0aXRsZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50
aXRsZSwgIl9fY2xvc2VkX18iKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9z
ZWxlY3RGaXJzdFRoZW5BY2NlcHQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LmluaXRpYWxTZWxl
Y3Rpb24gPSAxCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmFsU2VsZWN0aW9uID0gMgorICAgICAg
ICAgICAgb3Blbkl0ZW1TZWxlY3RvcigpCisgICAgICAgICAgICB0aXRsZVNweS53YWl0KCkKKyAg
ICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIl9fYWxsX18iKQorICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdF9zZWxlY3RGaXJzdFRoZW5BY2NlcHREaXJlY3RseSgpIHsK
KyAgICAgICAgICAgIHdlYlZpZXcuaW5pdGlhbFNlbGVjdGlvbiA9IDEKKyAgICAgICAgICAgIHdl
YlZpZXcuZmluYWxTZWxlY3Rpb24gPSAyCisgICAgICAgICAgICB3ZWJWaWV3LnVzZUFjY2VwdERp
cmVjdGx5ID0gdHJ1ZQorICAgICAgICAgICAgb3Blbkl0ZW1TZWxlY3RvcigpCisgICAgICAgICAg
ICB0aXRsZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIl9f
YWxsX18iKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9yZWplY3QoKSB7Cisg
ICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKKyAgICAgICAgICAgIHRyeUNvbXBhcmUod2Vi
VmlldywgInNlbGVjdG9yTG9hZGVkIiwgdHJ1ZSkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmll
dy50aXRsZSwgIk5vIG5ldyBzZWxlY3Rpb24gd2FzIG1hZGUiKQorICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdF9zZWxlY3RGaXJzdFRoZW5SZWplY3QoKSB7CisgICAgICAgICAgICB3
ZWJWaWV3LmluaXRpYWxTZWxlY3Rpb24gPSAxCisgICAgICAgICAgICB3ZWJWaWV3LmZpbmFsU2Vs
ZWN0aW9uID0gLTEKKyAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQorICAgICAgICAgICAg
dHJ5Q29tcGFyZSh3ZWJWaWV3LCAic2VsZWN0b3JMb2FkZWQiLCB0cnVlKQorICAgICAgICAgICAg
Y29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiTm8gbmV3IHNlbGVjdGlvbiB3YXMgbWFkZSIpCisgICAg
ICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbGlua0hvdmVyZWQucW1sIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVo
YXZpb3IvdHN0X2xpbmtIb3ZlcmVkLnFtbAppbmRleCBjOTg5NTgzMTljZDBiN2MzMzgwOTBjMGQ3
YzNjMmQ3NGU5OTcxNzRiLi5iOGFiMjk0OTY4ZjYxM2NiZjE0MzI3MmRkNWM5ZDc0MzEyMTk1ZDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbGlua0hvdmVyZWQucW1sCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9s
aW5rSG92ZXJlZC5xbWwKQEAgLTIsNyArMiw3IEBAIGltcG9ydCBRdFF1aWNrIDIuMAogaW1wb3J0
IFF0VGVzdCAxLjAKIGltcG9ydCBRdFdlYktpdCAzLjAKIAotRGVza3RvcFdlYlZpZXcgeworV2Vi
VmlldyB7CiAgICAgaWQ6IHdlYlZpZXcKICAgICB3aWR0aDogMjAwCiAgICAgaGVpZ2h0OiA0MDAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvRGVza3RvcEJlaGF2aW9yL3RzdF9sb2FkSHRtbC5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbG9hZEh0bWwu
cW1sCmluZGV4IGI0NWIwMWFjODkzY2FmNDc3MWY3Yzc3YTMwOTVlMzdlODQ0MjAyYzkuLjllMTcz
ZDU2YTNhNDljNjllYWRhYTNlMzVkOTFhODBjZmJjM2ZjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3Rz
dF9sb2FkSHRtbC5xbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2xvYWRIdG1sLnFtbApAQCAtMiw3ICsyLDcg
QEAgaW1wb3J0IFF0UXVpY2sgMi4wCiBpbXBvcnQgUXRUZXN0IDEuMAogaW1wb3J0IFF0V2ViS2l0
IDMuMAogCi1EZXNrdG9wV2ViVmlldyB7CitXZWJWaWV3IHsKICAgICBpZDogd2ViVmlldwogICAg
IHdpZHRoOiAyMDAKICAgICBoZWlnaHQ6IDQwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X21lc3Nh
Z2luZy5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L0Rlc2t0b3BCZWhhdmlvci90c3RfbWVzc2FnaW5nLnFtbAppbmRleCA3ZmNjOTFhNjQ5MWZiNDc0
NTk5MGY1NGIwZDlhYjY4YmQzMzM2Y2Q1Li44ZDc5ODY2Y2Q1ZTZjOWQ4YTk4NGE5NjgzYTBhMmEx
ZjcwNmY1NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbWVzc2FnaW5nLnFtbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlv
ci90c3RfbWVzc2FnaW5nLnFtbApAQCAtNCw3ICs0LDcgQEAgaW1wb3J0IFF0V2ViS2l0IDMuMAog
aW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAzLjAKIAogSXRlbSB7Ci0gICAgRGVza3RvcFdl
YlZpZXcgeworICAgIFdlYlZpZXcgewogICAgICAgICBpZDogd2ViVmlldwogICAgICAgICBwcm9w
ZXJ0eSB2YXJpYW50IGxhc3RNZXNzYWdlCiAgICAgICAgIGV4cGVyaW1lbnRhbC5wcmVmZXJlbmNl
cy5uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQ6IHRydWUKQEAgLTEzLDcgKzEzLDcgQEAgSXRlbSB7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBEZXNrdG9wV2ViVmlldyB7CisgICAgV2ViVmlldyB7
CiAgICAgICAgIGlkOiBvdGhlcldlYlZpZXcKICAgICAgICAgcHJvcGVydHkgdmFyaWFudCBsYXN0
TWVzc2FnZQogICAgICAgICBleHBlcmltZW50YWwucHJlZmVyZW5jZXMubmF2aWdhdG9yUXRPYmpl
Y3RFbmFibGVkOiB0cnVlCkBAIC0yMiw3ICsyMiw3IEBAIEl0ZW0gewogICAgICAgICB9CiAgICAg
fQogCi0gICAgRGVza3RvcFdlYlZpZXcgeworICAgIFdlYlZpZXcgewogICAgICAgICBpZDogZGlz
YWJsZWRXZWJWaWV3CiAgICAgICAgIHByb3BlcnR5IGJvb2wgcmVjZWl2ZWRNZXNzYWdlCiAgICAg
ICAgIGV4cGVyaW1lbnRhbC5wcmVmZXJlbmNlcy5uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQ6IGZh
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbmF2aWdhdGlvblJlcXVlc3RlZC5xbWwgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlv
ci90c3RfbmF2aWdhdGlvblJlcXVlc3RlZC5xbWwKaW5kZXggM2VmN2Q1NTE2ZjIzNjRkM2I2YTk3
MTY5ODhlYjdjYjUyMjFmZTY5Yy4uMmY2ZmQ3ZTEwNGEyOGJjMDRlYjcxOGMwMzdmODViYjZmNTUw
MGE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X25hdmlnYXRpb25SZXF1ZXN0ZWQucW1sCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJl
aGF2aW9yL3RzdF9uYXZpZ2F0aW9uUmVxdWVzdGVkLnFtbApAQCAtMTEsNyArMTEsNyBAQCBJdGVt
IHsKICAgICBwcm9wZXJ0eSB1cmwgYmVnaW5Vcmw6IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24v
dGVzdDIuaHRtbCIpCiAgICAgcHJvcGVydHkgdXJsIGVuZFVybDogUXQucmVzb2x2ZWRVcmwoIi4u
L2NvbW1vbi90ZXN0MS5odG1sIikKIAotICAgIERlc2t0b3BXZWJWaWV3IHsKKyAgICBXZWJWaWV3
IHsKICAgICAgICAgaWQ6IHdlYlZpZXcKICAgICAgICAgd2lkdGg6IDIwMAogICAgICAgICBoZWln
aHQ6IDIwMApAQCAtNTEsNyArNTEsNyBAQCBJdGVtIHsKICAgICAgICAgc2lnbmFsTmFtZTogImxv
YWRTdWNjZWVkZWQiCiAgICAgfQogCi0gICAgRGVza3RvcFdlYlZpZXcgeworICAgIFdlYlZpZXcg
ewogICAgICAgICBpZDogb3RoZXJXZWJWaWV3CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2l0ZW1T
ZWxlY3Rvci5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL1dlYlZpZXcvdHN0X2l0ZW1TZWxlY3Rvci5xbWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAzZDY4YmU1YjQyNDdkYTZjNGZhZDcxZDk4NmY0MWRiNTY0NjQwYjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9pdGVtU2VsZWN0b3IucW1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLWltcG9ydCBRdFF1aWNrIDIuMAotaW1w
b3J0IFF0VGVzdCAxLjAKLWltcG9ydCBRdFdlYktpdCAzLjAKLWltcG9ydCBRdFdlYktpdC5leHBl
cmltZW50YWwgMy4wCi0KLS8vIEZJWE1FOiB1c2VkIGJlY2F1c2Ugd2Ugd2FudCB0byBoYXZlIG1v
dXNlQ2xpY2soKSB0byBvcGVuIHRoZSA8c2VsZWN0PiB0YWcuIFdlIGNhbiByZW1vdmUgdGhpcwot
Ly8gd2hlbiBUZXN0Q2FzZSBzdGFydHMgc3VwcG9ydGluZyB0b3VjaCBldmVudHMsIHNlZSBodHRw
czovL2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dzZS9RVEJVRy0yMzA4My4KLWltcG9ydCAi
Li4vRGVza3RvcEJlaGF2aW9yIgotCi1EZXNrdG9wV2ViVmlldyB7Ci0gICAgaWQ6IHdlYlZpZXcK
LQotICAgIHdpZHRoOiA0MDAKLSAgICBoZWlnaHQ6IDQwMAotCi0gICAgcHJvcGVydHkgaW50IGlu
aXRpYWxTZWxlY3Rpb24KLSAgICBwcm9wZXJ0eSBpbnQgZmluYWxTZWxlY3Rpb24KLSAgICBwcm9w
ZXJ0eSBib29sIHVzZUFjY2VwdERpcmVjdGx5Ci0gICAgcHJvcGVydHkgYm9vbCBzZWxlY3Rvckxv
YWRlZAotCi0gICAgZXhwZXJpbWVudGFsLml0ZW1TZWxlY3RvcjogSXRlbSB7Ci0gICAgICAgIENv
bXBvbmVudC5vbkNvbXBsZXRlZDogewotICAgICAgICAgICAgaWYgKFdlYlZpZXcudmlldy5pbml0
aWFsU2VsZWN0aW9uICE9IC0xKQotICAgICAgICAgICAgICAgIG1vZGVsLml0ZW1zLnNlbGVjdChX
ZWJWaWV3LnZpZXcuaW5pdGlhbFNlbGVjdGlvbikKLQotICAgICAgICAgICAgaWYgKFdlYlZpZXcu
dmlldy5maW5hbFNlbGVjdGlvbiA9PSAtMSkKLSAgICAgICAgICAgICAgICBtb2RlbC5yZWplY3Qo
KQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVzZUFjY2VwdERpcmVj
dGx5KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vZGVsLmFjY2VwdChXZWJWaWV3LnZpZXcuZmlu
YWxTZWxlY3Rpb24pCi0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgbW9kZWwuaXRlbXMuc2VsZWN0KFdlYlZpZXcudmlldy5maW5hbFNlbGVjdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KCkKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIFdlYlZpZXcudmlldy5zZWxlY3RvckxvYWRlZCA9IHRydWUK
LSAgICAgICAgfQotICAgIH0KLQotICAgIFNpZ25hbFNweSB7Ci0gICAgICAgIGlkOiBsb2FkU3B5
Ci0gICAgICAgIHRhcmdldDogd2ViVmlldwotICAgICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2Nl
ZWRlZCIKLSAgICB9Ci0KLSAgICBTaWduYWxTcHkgewotICAgICAgICBpZDogdGl0bGVTcHkKLSAg
ICAgICAgdGFyZ2V0OiB3ZWJWaWV3Ci0gICAgICAgIHNpZ25hbE5hbWU6ICJ0aXRsZUNoYW5nZWQi
Ci0gICAgfQotCi0gICAgVGVzdENhc2UgewotICAgICAgICBpZDogdGVzdAotICAgICAgICBuYW1l
OiAiV2ViVmlld0l0ZW1TZWxlY3RvciIKLSAgICAgICAgd2hlbjogd2luZG93U2hvd24KLQotICAg
ICAgICBmdW5jdGlvbiBpbml0KCkgewotICAgICAgICAgICAgd2ViVmlldy5pbml0aWFsU2VsZWN0
aW9uID0gLTEKLSAgICAgICAgICAgIHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAtMQotICAgICAg
ICAgICAgd2ViVmlldy51c2VBY2NlcHREaXJlY3RseSA9IGZhbHNlCi0gICAgICAgICAgICB3ZWJW
aWV3LnNlbGVjdG9yTG9hZGVkID0gZmFsc2UKLSAgICAgICAgICAgIGxvYWRTcHkuY2xlYXIoKQot
ICAgICAgICAgICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vc2VsZWN0
Lmh0bWwiKSkKLSAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCi0gICAgICAgICAgICB0aXRsZVNw
eS5jbGVhcigpCi0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBvcGVuSXRlbVNlbGVjdG9y
KCkgewotICAgICAgICAgICAgbW91c2VDbGljayh3ZWJWaWV3LCAxNSwgMTUsIFF0LkxlZnRCdXR0
b24pCi0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0X2FjY2VwdCgpIHsKLSAgICAg
ICAgICAgIHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAxCi0gICAgICAgICAgICBvcGVuSXRlbVNl
bGVjdG9yKCkKLSAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQotICAgICAgICAgICAgY29tcGFy
ZSh3ZWJWaWV3LnRpdGxlLCAiX19jbG9zZWRfXyIpCi0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiB0ZXN0X2FjY2VwdERpcmVjdGx5KCkgewotICAgICAgICAgICAgd2ViVmlldy5maW5hbFNl
bGVjdGlvbiA9IDEKLSAgICAgICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGlyZWN0bHkgPSB0cnVl
Ci0gICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKLSAgICAgICAgICAgIHRpdGxlU3B5Lndh
aXQoKQotICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19jbG9zZWRfXyIpCi0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0X3NlbGVjdEZpcnN0VGhlbkFjY2VwdCgp
IHsKLSAgICAgICAgICAgIHdlYlZpZXcuaW5pdGlhbFNlbGVjdGlvbiA9IDEKLSAgICAgICAgICAg
IHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAyCi0gICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9y
KCkKLSAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQotICAgICAgICAgICAgY29tcGFyZSh3ZWJW
aWV3LnRpdGxlLCAiX19hbGxfXyIpCi0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0
X3NlbGVjdEZpcnN0VGhlbkFjY2VwdERpcmVjdGx5KCkgewotICAgICAgICAgICAgd2ViVmlldy5p
bml0aWFsU2VsZWN0aW9uID0gMQotICAgICAgICAgICAgd2ViVmlldy5maW5hbFNlbGVjdGlvbiA9
IDIKLSAgICAgICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGlyZWN0bHkgPSB0cnVlCi0gICAgICAg
ICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKLSAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQotICAg
ICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19hbGxfXyIpCi0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiB0ZXN0X3JlamVjdCgpIHsKLSAgICAgICAgICAgIG9wZW5JdGVtU2Vs
ZWN0b3IoKQotICAgICAgICAgICAgdHJ5Q29tcGFyZSh3ZWJWaWV3LCAic2VsZWN0b3JMb2FkZWQi
LCB0cnVlKQotICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiTm8gbmV3IHNlbGVj
dGlvbiB3YXMgbWFkZSIpCi0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0ZXN0X3NlbGVj
dEZpcnN0VGhlblJlamVjdCgpIHsKLSAgICAgICAgICAgIHdlYlZpZXcuaW5pdGlhbFNlbGVjdGlv
biA9IDEKLSAgICAgICAgICAgIHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAtMQotICAgICAgICAg
ICAgb3Blbkl0ZW1TZWxlY3RvcigpCi0gICAgICAgICAgICB0cnlDb21wYXJlKHdlYlZpZXcsICJz
ZWxlY3RvckxvYWRlZCIsIHRydWUpCi0gICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUs
ICJObyBuZXcgc2VsZWN0aW9uIHdhcyBtYWRlIikKLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1s
dGVzdHMuRGVza3RvcEJlaGF2aW9yLnBybyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMuRGVza3RvcEJlaGF2aW9yLnBybwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kOTk1MmE1MDhlY2RkMjU4OGJjZGY3YzBkMzYzOTkyZWRjMDYzMjRlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0
ZXN0cy5EZXNrdG9wQmVoYXZpb3IucHJvCkBAIC0wLDAgKzEsMjAgQEAKK2luY2x1ZGUoLi4vdGVz
dHMucHJpKQorVEFSR0VUID0gdHN0X3FtbHRlc3RzX0Rlc2t0b3BCZWhhdmlvcgorCitDT05GSUcg
Kz0gcXR3ZWJraXQtcHJpdmF0ZQorQ09ORklHICs9IHdhcm5fb24gdGVzdGNhc2UKKworUVQgLT0g
dGVzdGxpYgorUVQgKz0gcW1sdGVzdAorCitERUZJTkVTICs9IEVOQUJMRV9ERVNLVE9QX0JFSEFW
SU9SPTEKKyMgVGVzdCB0aGUgUU1MIGZpbGVzIHVuZGVyIERlc2t0b3BCZWhhdmlvciBpbiB0aGUg
c291cmNlIHJlcG9zaXRvcnkuCitERUZJTkVTICs9IFFVSUNLX1RFU1RfU09VUkNFX0RJUj1cIlxc
XCIkJFBXRCQke1FNQUtFX0RJUl9TRVB9RGVza3RvcEJlaGF2aW9yXFxcIlwiCitERUZJTkVTICs9
IElNUE9SVF9ESVI9XCJcXFwiJCR7Uk9PVF9CVUlMRF9ESVJ9JCR7UU1BS0VfRElSX1NFUH1pbXBv
cnRzXFxcIlwiCisKK09USEVSX0ZJTEVTICs9IFwKKyAgICBEZXNrdG9wQmVoYXZpb3IvRGVza3Rv
cFdlYlZpZXcucW1sIFwKKyAgICBEZXNrdG9wQmVoYXZpb3IvdHN0X2xpbmtIb3ZlcmVkLnFtbCBc
CisgICAgRGVza3RvcEJlaGF2aW9yL3RzdF9sb2FkSHRtbC5xbWwgXAorICAgIERlc2t0b3BCZWhh
dmlvci90c3RfbWVzc2FnaW5nLnFtbCBcCisgICAgRGVza3RvcEJlaGF2aW9yL3RzdF9uYXZpZ2F0
aW9uUmVxdWVzdGVkLnFtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5XZWJWaWV3LnBybyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMuV2ViVmlldy5wcm8KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTIyNjc5M2M5ZWJhZjgxMjc5MWZiNmYwZjk0YzdjN2NkYzEzMDMxMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvcW1sdGVzdHMuV2ViVmlldy5wcm8KQEAgLTAsMCArMSwyOCBAQAoraW5jbHVkZSguLi90ZXN0
cy5wcmkpCitUQVJHRVQgPSB0c3RfcW1sdGVzdHNfV2ViVmlldworCitDT05GSUcgKz0gcXR3ZWJr
aXQtcHJpdmF0ZQorQ09ORklHICs9IHdhcm5fb24gdGVzdGNhc2UKKworUVQgLT0gdGVzdGxpYgor
UVQgKz0gcW1sdGVzdAorCisjIFRlc3QgdGhlIFFNTCBmaWxlcyB1bmRlciBXZWJWaWV3IGluIHRo
ZSBzb3VyY2UgcmVwb3NpdG9yeS4KK0RFRklORVMgKz0gUVVJQ0tfVEVTVF9TT1VSQ0VfRElSPVwi
XFxcIiQkUFdEJCR7UU1BS0VfRElSX1NFUH1XZWJWaWV3XFxcIlwiCitERUZJTkVTICs9IElNUE9S
VF9ESVI9XCJcXFwiJCR7Uk9PVF9CVUlMRF9ESVJ9JCR7UU1BS0VfRElSX1NFUH1pbXBvcnRzXFxc
IlwiCisKK09USEVSX0ZJTEVTICs9IFwKKyAgICBXZWJWaWV3L3RzdF9mYXZJY29uTG9hZC5xbWwg
XAorICAgIFdlYlZpZXcvdHN0X2Rvd25sb2FkLnFtbCBcCisgICAgV2ViVmlldy90c3RfZ2VvcGVy
bWlzc2lvbi5xbWwgXAorICAgIFdlYlZpZXcvdHN0X2l0ZW1TZWxlY3Rvci5xbWwgXAorICAgIFdl
YlZpZXcvdHN0X2phdmFTY3JpcHREaWFsb2dzLnFtbCBcCisgICAgV2ViVmlldy90c3RfbG9hZEZh
aWwucW1sIFwKKyAgICBXZWJWaWV3L3RzdF9sb2FkSWdub3JlLnFtbCBcCisgICAgV2ViVmlldy90
c3RfbG9hZEh0bWwucW1sIFwKKyAgICBXZWJWaWV3L3RzdF9sb2FkUHJvZ3Jlc3MucW1sIFwKKyAg
ICBXZWJWaWV3L3RzdF9sb2FkUHJvZ3Jlc3NTaWduYWwucW1sIFwKKyAgICBXZWJWaWV3L3RzdF9w
cmVmZXJlbmNlcy5xbWwgXAorICAgIFdlYlZpZXcvdHN0X3Byb3BlcnRpZXMucW1sIFwKKyAgICBX
ZWJWaWV3L3RzdF90aXRsZUNoYW5nZWQucW1sIFwKKyAgICBXZWJWaWV3L3RzdF9hcHBsaWNhdGlv
blNjaGVtZS5xbWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvcW1sdGVzdHMucHJvIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8KaW5kZXggYzhjZTg3YTdmYzFlOGMwNjMz
OWQ0YzdiMDQyODdlOWM3MWU2ODVlYy4uZTljMTg1NzY1MWYyNmE2YTMzOWE3OGM0OTBjMTJjNmU0
NDg2ZGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8KQEAgLTEsMzIgKzEsMyBAQAotaW5jbHVk
ZSguLi90ZXN0cy5wcmkpCitURU1QTEFURSA9IHN1YmRpcnMKIAotQ09ORklHICs9IHF0d2Via2l0
LXByaXZhdGUKLUNPTkZJRyArPSB3YXJuX29uIHRlc3RjYXNlCi0KLVFUIC09IHRlc3RsaWIKLVFU
ICs9IHFtbHRlc3QKLQotIyBRTUwgZmlsZXMgdGVzdGVkIGFyZSB0aGUgb25lcyBpbiBXZWJLaXQg
c291cmNlIHJlcG9zaXRvcnkuCi1ERUZJTkVTICs9IFFVSUNLX1RFU1RfU09VUkNFX0RJUj1cIlxc
XCIkJFBXRFxcXCJcIgotREVGSU5FUyArPSBJTVBPUlRfRElSPVwiXFxcIiQke1JPT1RfQlVJTERf
RElSfSQke1FNQUtFX0RJUl9TRVB9aW1wb3J0c1xcXCJcIgotCi1PVEhFUl9GSUxFUyArPSBcCi0g
ICAgRGVza3RvcEJlaGF2aW9yL0Rlc2t0b3BXZWJWaWV3LnFtbCBcCi0gICAgRGVza3RvcEJlaGF2
aW9yL3RzdF9saW5rSG92ZXJlZC5xbWwgXAotICAgIERlc2t0b3BCZWhhdmlvci90c3RfbG9hZEh0
bWwucW1sIFwKLSAgICBEZXNrdG9wQmVoYXZpb3IvdHN0X21lc3NhZ2luZy5xbWwgXAotICAgIERl
c2t0b3BCZWhhdmlvci90c3RfbmF2aWdhdGlvblJlcXVlc3RlZC5xbWwgXAotICAgIFdlYlZpZXcv
dHN0X2Zhdkljb25Mb2FkLnFtbCBcCi0gICAgV2ViVmlldy90c3RfZG93bmxvYWQucW1sIFwKLSAg
ICBXZWJWaWV3L3RzdF9nZW9wZXJtaXNzaW9uLnFtbCBcCi0gICAgV2ViVmlldy90c3RfaXRlbVNl
bGVjdG9yLnFtbCBcCi0gICAgV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3MucW1sIFwKLSAg
ICBXZWJWaWV3L3RzdF9sb2FkRmFpbC5xbWwgXAotICAgIFdlYlZpZXcvdHN0X2xvYWRJZ25vcmUu
cW1sIFwKLSAgICBXZWJWaWV3L3RzdF9sb2FkSHRtbC5xbWwgXAotICAgIFdlYlZpZXcvdHN0X2xv
YWRQcm9ncmVzcy5xbWwgXAotICAgIFdlYlZpZXcvdHN0X2xvYWRQcm9ncmVzc1NpZ25hbC5xbWwg
XAotICAgIFdlYlZpZXcvdHN0X3ByZWZlcmVuY2VzLnFtbCBcCi0gICAgV2ViVmlldy90c3RfcHJv
cGVydGllcy5xbWwgXAotICAgIFdlYlZpZXcvdHN0X3RpdGxlQ2hhbmdlZC5xbWwgXAotICAgIFdl
YlZpZXcvdHN0X2FwcGxpY2F0aW9uU2NoZW1lLnFtbAorU1VCRElSUyArPSBxbWx0ZXN0cy5EZXNr
dG9wQmVoYXZpb3IucHJvIHFtbHRlc3RzLldlYlZpZXcucHJvCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3RzdF9xbWx0ZXN0cy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3RzdF9xbWx0
ZXN0cy5jcHAKaW5kZXggOGM4YzRiM2U2ZGU1YjdkMjZhZjc4Y2Y4ZTE3YWQ4N2MzYTAxNDk3YS4u
NjllYzI1OTUzMDI5N2E3ZDhhZmVjNmM4YTM0NjcwMGVlZjFjNzY5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy90c3RfcW1sdGVzdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
dHN0X3FtbHRlc3RzLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgIi4uL2J5dGVhcnJh
eXRlc3RkYXRhLmgiCiAjaW5jbHVkZSAiLi4vdXRpbC5oIgogCisjaW5jbHVkZSAicXF1aWNrd2Vi
dmlld19wLmgiCiAjaW5jbHVkZSA8UVZhckxlbmd0aEFycmF5PgogI2luY2x1ZGUgPFF0UXVpY2tU
ZXN0L3F1aWNrdGVzdC5oPgogI2luY2x1ZGUgPFF0V2lkZ2V0cy9RQXBwbGljYXRpb24+CkBAIC00
Myw1ICs0NCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAvLyBUaGlz
IGNhbiBiZSByZW1vdmVkIGFzIHNvb24gYXMgd2UgZG8gbm90IHVzZSBRdFdpZGdldHMgYW55IG1v
cmUuCiAgICAgUUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKICAgICBxbWxSZWdpc3RlclR5
cGU8Qnl0ZUFycmF5VGVzdERhdGE+KCJUZXN0IiwgMSwgMCwgIkJ5dGVBcnJheVRlc3REYXRhIik7
CisKKyNpZmRlZiBFTkFCTEVfREVTS1RPUF9CRUhBVklPUgorICAgIFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWw6OnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cih0cnVlKTsKKyNlbmRp
ZgogICAgIHJldHVybiBxdWlja190ZXN0X21haW4oYXJnYywgYXJndiwgInFtbHRlc3RzIiwgMCwg
UVVJQ0tfVEVTVF9TT1VSQ0VfRElSKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKaW5kZXggMDlmODk2MDIxYTlmOTA5
YzBlYzM3OTYxYjM0YTNlZmE4MzgyMDQ0Yy4uMDRjOGZkMWRhYTUzZTBiODM1ZTE5YjIxZDFkYmJh
ODVlN2NlNmViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZUV2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgc3RhdGljIGlubGluZSBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyb3BBY3Rpb25Ub0RyYWdPcGVyYXRpb24oUXQ6OkRyb3BB
Y3Rpb25zIGEKIAogUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpRdFdlYlBhZ2VFdmVudEhhbmRsZXIo
V0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlBhZ2UqIHFtbFdlYlBhZ2UsIFFRdWlja1dlYlZp
ZXcqIHFtbFdlYlZpZXcpCiAgICAgOiBtX3dlYlBhZ2VQcm94eSh0b0ltcGwocGFnZVJlZikpCisg
ICAgLCBtX2ludGVyYWN0aW9uRW5naW5lKDApCiAgICAgLCBtX3Bhbkdlc3R1cmVSZWNvZ25pemVy
KHRoaXMpCiAgICAgLCBtX3BpbmNoR2VzdHVyZVJlY29nbml6ZXIodGhpcykKICAgICAsIG1fdGFw
R2VzdHVyZVJlY29nbml6ZXIodGhpcykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBkMjFkN2RlZTQyZjY0M2I3YmM5NmY3MjgxZWQzNDBkOTEwZTJm
OGJmLi5mOTliMTdmMzg0N2ZhMjk2Y2JiODQzNzc5MjgwNWExNmFkZGY1Y2FjIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTItMDItMDIgIEpvY2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdIFNwbGl0IFFRdWlja1dlYlZpZXdQcml2YXRlIGluIHR3byBjbGFz
c2VzLCBmb3IgZGVza3RvcCBhbmQgdG91Y2ggYmVoYXZpb3IuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYzMgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5jcHA6CisgICAgICAgIChCcm93c2VyV2luZG93OjpCcm93c2VyV2luZG93KToKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcDoKKyAgICAgICAgKE1p
bmlCcm93c2VyQXBwbGljYXRpb246OnNlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKE1pbmlCcm93
c2VyQXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRpb25zKToKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmg6CisgICAgICAgIChXaW5kb3dPcHRpb25zKToK
KyAgICAgICAgKFdpbmRvd09wdGlvbnM6OldpbmRvd09wdGlvbnMpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwOgorICAgICAgICAoV1RSOjpQbGF0
Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9xdC9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgorCiAyMDExLTEyLTA1ICBKb2NlbHluIFR1
cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBFbmFi
bGUgZGV2ZWxvcGVyIGV4dHJhcyBvbiBwYWdlcyBpbiBNaW5pQnJvd3Nlci4KZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggYTc2ODU4MWRjYjliMjgyY2UxM2U5ZDVhZThj
NjllODg0OGMxYjdhZS4uNWNjOWU2NGMyOWJhNWFhY2RjNjBhNDdlMmVhODI2YzRjMGM0OWZjMSAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAgLTU0LDggKzU0LDYgQEAg
QnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyhXaW5kb3dPcHRpb25zKiBvcHRpb25zKQogICAg
IHNldFNvdXJjZShRVXJsKCJxcmM6L3FtbC9Ccm93c2VyV2luZG93LnFtbCIpKTsKICAgICBjb25u
ZWN0KHJvb3RPYmplY3QoKSwgU0lHTkFMKHBhZ2VUaXRsZUNoYW5nZWQoUVN0cmluZykpLCB0aGlz
LCBTTE9UKHNldFdpbmRvd1RpdGxlKFFTdHJpbmcpKSk7CiAgICAgY29ubmVjdChyb290T2JqZWN0
KCksIFNJR05BTChuZXdXaW5kb3coUVN0cmluZykpLCB0aGlzLCBTTE9UKG5ld1dpbmRvdyhRU3Ry
aW5nKSkpOwotICAgIGlmIChvcHRpb25zLT51c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvcigp
KQotICAgICAgICB3ZWJWaWV3KCktPmV4cGVyaW1lbnRhbCgpLT5zZXRVc2VUcmFkaXRpb25hbERl
c2t0b3BCZWhhdmlvdXIodHJ1ZSk7CiAgICAgaWYgKG9wdGlvbnMtPnN0YXJ0RnVsbFNjcmVlbigp
KQogICAgICAgICBzaG93RnVsbFNjcmVlbigpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAppbmRleCA4ODI2MGI4Y2NhNzQ0
ZmU3ZDY4Y2NiNzllNjQ4ZjMxMTcwNTAyNWM0Li43NmY1NzcwNTM0MmJjZWRmMmU4YTAwZmRiMmJl
ZGNkY2Y3NTcxODM4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nl
ckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFw
cGxpY2F0aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1pbmlCcm93c2VyQXBw
bGljYXRpb24uaCIKIAogI2luY2x1ZGUgIkJyb3dzZXJXaW5kb3cuaCIKKyNpbmNsdWRlICJxcXVp
Y2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJ1dGlscy5oIgogI2luY2x1ZGUgPFFSZWdFeHA+CiAj
aW5jbHVkZSA8UUV2ZW50PgpAQCAtMTgyLDcgKzE4Myw3IEBAIHZvaWQgTWluaUJyb3dzZXJBcHBs
aWNhdGlvbjo6c2VuZFRvdWNoRXZlbnQoQnJvd3NlcldpbmRvdyogYnJvd3NlcldpbmRvdykKICAg
ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVUb3VjaEV2ZW50KGJyb3dzZXJXaW5kb3cs
IGRldmljZSwgbV90b3VjaFBvaW50cy52YWx1ZXMoKSk7CiAKICAgICBib29sIGhvbGRpbmdDb250
cm9sID0gUUFwcGxpY2F0aW9uOjprZXlib2FyZE1vZGlmaWVycygpLnRlc3RGbGFnKFF0OjpDb250
cm9sTW9kaWZpZXIpOwotICAgIGlmICghbV93aW5kb3dPcHRpb25zLnVzZVRyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW9yKCkpCisgICAgaWYgKCFRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsOjp1c2VU
cmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSkKICAgICAgICAgYnJvd3NlcldpbmRvdy0+dXBk
YXRlVmlzdWFsTW9ja1RvdWNoUG9pbnRzKGhvbGRpbmdDb250cm9sID8gbV90b3VjaFBvaW50cy52
YWx1ZXMoKSA6IFFMaXN0PFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OlRvdWNoUG9pbnQ+KCkpOwog
CiAgICAgLy8gR2V0IHJpZCBvZiB0b3VjaC1wb2ludHMgdGhhdCBhcmUgbm8gbG9uZ2VyIHZhbGlk
CkBAIC0yMjAsOSArMjIxLDkgQEAgdm9pZCBNaW5pQnJvd3NlckFwcGxpY2F0aW9uOjpoYW5kbGVV
c2VyT3B0aW9ucygpCiAgICAgfQogCiAgICAgY29uc3QgYm9vbCB1c2VEZXNrdG9wQmVoYXZpb3Ig
PSB0YWtlT3B0aW9uRmxhZygmYXJncywgIi0tZGVza3RvcCIpOworICAgIFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw6OnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cih1c2VEZXNrdG9w
QmVoYXZpb3IpOwogICAgIGlmICghdXNlRGVza3RvcEJlaGF2aW9yKQogICAgICAgICBxcHV0ZW52
KCJRVF9XRUJLSVRfVVNFX01PQklMRV9USEVNRSIsIFFCeXRlQXJyYXkoIjEiKSk7Ci0gICAgbV93
aW5kb3dPcHRpb25zLnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW9yKHVzZURlc2t0b3BC
ZWhhdmlvcik7CiAgICAgbV93aW5kb3dPcHRpb25zLnNldFByaW50TG9hZGVkVXJscyh0YWtlT3B0
aW9uRmxhZygmYXJncywgIi12IikpOwogICAgIG1fd2luZG93T3B0aW9ucy5zZXRTdGFydE1heGlt
aXplZCh0YWtlT3B0aW9uRmxhZygmYXJncywgIi0tbWF4aW1pemUiKSk7CiAgICAgbV93aW5kb3dP
cHRpb25zLnNldFN0YXJ0RnVsbFNjcmVlbih0YWtlT3B0aW9uRmxhZygmYXJncywgIi1mIikpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5o
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNhdGlvbi5oCmluZGV4IDQz
ZjgzY2ZlMWE3NTdlZDJhYmVhYzFiZTRmYmQxNDU1NDZhMDQ4ZGYuLmI1NTY1ODU1ZTRlMmI0OTg2
Y2ExMWUzMmVmNTYwZmM3MjIxZGU1YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyQXBwbGljYXRpb24uaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5p
QnJvd3NlckFwcGxpY2F0aW9uLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3MgQnJvd3NlcldpbmRv
dzsKIGNsYXNzIFdpbmRvd09wdGlvbnMgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QK
ICAgICBRX1BST1BFUlRZKGJvb2wgcHJpbnRMb2FkZWRVcmxzIFJFQUQgcHJpbnRMb2FkZWRVcmxz
KQotICAgIFFfUFJPUEVSVFkoYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvciBSRUFE
IHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW9yKQogICAgIFFfUFJPUEVSVFkoYm9vbCBzdGFy
dE1heGltaXplZCBSRUFEIHN0YXJ0TWF4aW1pemVkKQogICAgIFFfUFJPUEVSVFkoYm9vbCB0b3Vj
aE1vY2tpbmdFbmFibGVkIFJFQUQgdG91Y2hNb2NraW5nRW5hYmxlZCBXUklURSBzZXRUb3VjaE1v
Y2tpbmdFbmFibGVkIE5PVElGWSB0b3VjaE1vY2tpbmdFbmFibGVkQ2hhbmdlZCkKIApAQCAtNTEs
NyArNTAsNiBAQCBwdWJsaWM6CiAgICAgV2luZG93T3B0aW9ucyhRT2JqZWN0KiBwYXJlbnQgPSAw
KQogICAgICAgICA6IFFPYmplY3QocGFyZW50KQogICAgICAgICAsIG1fcHJpbnRMb2FkZWRVcmxz
KGZhbHNlKQotICAgICAgICAsIG1fdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3IoZmFsc2Up
CiAgICAgICAgICwgbV9zdGFydE1heGltaXplZChmYWxzZSkKICAgICAgICAgLCBtX3RvdWNoTW9j
a2luZ0VuYWJsZWQodHJ1ZSkKICAgICAgICAgLCBtX3dpbmRvd1NpemUoUVNpemUoOTgwLCA3MzUp
KQpAQCAtNjAsOCArNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFByaW50TG9hZGVkVXJs
cyhib29sIGVuYWJsZWQpIHsgbV9wcmludExvYWRlZFVybHMgPSBlbmFibGVkOyB9CiAgICAgYm9v
bCBwcmludExvYWRlZFVybHMoKSBjb25zdCB7IHJldHVybiBtX3ByaW50TG9hZGVkVXJsczsgfQot
ICAgIHZvaWQgc2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3IoYm9vbCBlbmFibGVkKSB7
IG1fdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3IgPSBlbmFibGVkOyB9Ci0gICAgYm9vbCB1
c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlVHJhZGl0
aW9uYWxEZXNrdG9wQmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFN0YXJ0TWF4aW1pemVkKGJvb2wg
ZW5hYmxlZCkgeyBtX3N0YXJ0TWF4aW1pemVkID0gZW5hYmxlZDsgfQogICAgIGJvb2wgc3RhcnRN
YXhpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TWF4aW1pemVkOyB9CiAgICAgdm9pZCBz
ZXRTdGFydEZ1bGxTY3JlZW4oYm9vbCBlbmFibGVkKSB7IG1fc3RhcnRGdWxsU2NyZWVuID0gZW5h
YmxlZDsgfQpAQCAtODIsNyArNzgsNiBAQCBzaWduYWxzOgogCiBwcml2YXRlOgogICAgIGJvb2wg
bV9wcmludExvYWRlZFVybHM7Ci0gICAgYm9vbCBtX3VzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2
aW9yOwogICAgIGJvb2wgbV9zdGFydE1heGltaXplZDsKICAgICBib29sIG1fc3RhcnRGdWxsU2Ny
ZWVuOwogICAgIGJvb2wgbV90b3VjaE1vY2tpbmdFbmFibGVkOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAppbmRleCA0MjU5OTEzMjRmOTA3MmRm
YzFmODNlMmZkNGEwNDFhM2E5ZmVjZGYwLi4xYzNjZjY5N2E3MDVmODQ5YWMyMjRiMTQ2YTY5ZGY2
OTIwNWMwMzY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3Jt
V2ViVmlld1F0LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2Vi
Vmlld1F0LmNwcApAQCAtNzUsNyArNzUsNiBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
VmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdybwogICAg
ICwgbV9tb2RhbEV2ZW50TG9vcCgwKQogewogICAgIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwg
ZXhwZXJpbWVudGFsKG1fdmlldyk7Ci0gICAgZXhwZXJpbWVudGFsLnNldFVzZVRyYWRpdGlvbmFs
RGVza3RvcEJlaGF2aW91cih0cnVlKTsKICAgICBleHBlcmltZW50YWwuc2V0UmVuZGVyVG9PZmZz
Y3JlZW5CdWZmZXIodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvcXQvbWFpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L21haW4uY3BwCmluZGV4
IGJkYmFmZDRjOWJhNTJmODRhNDAwN2JhYzYwOTFkODM5ZjBjODczNDAuLjYwZDA1OGE1OGU3ZjEy
NjkxNjk0NzY0OTY1ZTUwMjA1ZTFmZDZlMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvbWFpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9tYWluLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVz
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKIAogI2luY2x1ZGUg
PHN0ZGlvLmg+CiAKQEAgLTkxLDYgKzkyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgICAgICAgICAgcXB1dGVudigiUVRfV0VCS0lUX1NVUFBSRVNTX1dFQl9QUk9DRVNT
X09VVFBVVCIsICIxIik7CiAgICAgfQogCisgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6
c2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKHRydWUpOwogICAgIFFBcHBsaWNhdGlv
biBhcHAoYXJnYywgYXJndik7CiAgICAgTGF1bmNoZXIgbGF1bmNoZXIoYXJnYywgYXJndik7CiAg
ICAgUVRpbWVyOjpzaW5nbGVTaG90KDAsICZsYXVuY2hlciwgU0xPVChsYXVuY2goKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125128</attachid>
            <date>2012-02-02 05:51:39 -0800</date>
            <delta_ts>2012-02-02 08:00:16 -0800</delta_ts>
            <desc>Code moving patch (will squash before commit)</desc>
            <filename>codeMoving.patch</filename>
            <type>text/plain</type>
            <size>13522</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
CmluZGV4IDk3MjUxZGQuLjU4MTBiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNjQsMjggKzY0LDYgQEAgc3RhdGljIFFR
dWlja1dlYlZpZXdQcml2YXRlKiBjcmVhdGVQcml2YXRlT2JqZWN0KFFRdWlja1dlYlZpZXcqIHB1
YikKICAgICByZXR1cm4gbmV3IFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGUocHViKTsKIH0KIAot
UVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlOjpRUXVpY2tXZWJWaWV3RGVza3RvcFByaXZhdGUo
UVF1aWNrV2ViVmlldyogdmlld3BvcnQpCi0gICAgOiBRUXVpY2tXZWJWaWV3UHJpdmF0ZSh2aWV3
cG9ydCkKLXsKLX0KLQotUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6UVF1aWNrV2ViVmlld1Rv
dWNoUHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCkKLSAgICA6IFFRdWlja1dlYlZpZXdQ
cml2YXRlKHZpZXdwb3J0KQotICAgICwgaW50ZXJhY3Rpb25FbmdpbmUobmV3IFF0Vmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZSh2aWV3cG9ydCwgcGFnZVZpZXcuZGF0YSgpKSkKLSAgICAsIHBvc3RU
cmFuc2l0aW9uU3RhdGUoYWRvcHRQdHIobmV3IFBvc3RUcmFuc2l0aW9uU3RhdGUodGhpcykpKQot
ICAgICwgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlKGZhbHNlKQotICAgICwgcGFnZUlzU3VzcGVu
ZGVkKGZhbHNlKQotewotICAgIFFPYmplY3Q6OmNvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0
YSgpLCBTSUdOQUwoY29udGVudFN1c3BlbmRSZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9x
X3N1c3BlbmQoKSkpOwotICAgIFFPYmplY3Q6OmNvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0
YSgpLCBTSUdOQUwoY29udGVudFJlc3VtZVJlcXVlc3RlZCgpKSwgdmlld3BvcnQsIFNMT1QoX3Ff
cmVzdW1lKCkpKTsKLSAgICBRT2JqZWN0Ojpjb25uZWN0KGludGVyYWN0aW9uRW5naW5lLmRhdGEo
KSwgU0lHTkFMKHZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYp
KSwgdmlld3BvcnQsIFNMT1QoX3Ffdmlld3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25z
dCBRUG9pbnRGJikpKTsKLX0KLQotUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6flFRdWlja1dl
YlZpZXdUb3VjaFByaXZhdGUoKQotewotICAgIGludGVyYWN0aW9uRW5naW5lLT5kaXNjb25uZWN0
KCk7Ci19Ci0KIFFRdWlja1dlYlZpZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCkKICAgICA6IHFfcHRyKHZpZXdwb3J0KQogICAgICwgYWxlcnRE
aWFsb2coMCkKQEAgLTE1NCwyNSArMTMyLDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
ZGlzYWJsZU1vdXNlRXZlbnRzKCkKICAgICBxLT5zZXRBY2NlcHRIb3ZlckV2ZW50cyhmYWxzZSk7
CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlOjppbml0aWFsaXplKFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi17Ci0gICAg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUoY29udGV4dFJlZiwgcGFnZUdyb3VwUmVm
KTsKLSAgICBlbmFibGVNb3VzZUV2ZW50cygpOwotCi0gICAgLy8gVHJpZ2dlciBzZXR0aW5nIG9m
IGNvcnJlY3QgdmlzaWJpbGl0eSBmbGFncyBhZnRlciBldmVyeXRoaW5nIHdhcyBhbGxvY2F0ZWQg
YW5kIGluaXRpYWxpemVkLgotICAgIF9xX29uVmlzaWJsZUNoYW5nZWQoKTsKLX0KLQotdm9pZCBR
UXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjppbml0aWFsaXplKFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi17Ci0gICAgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmluaXRpYWxpemUoY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmKTsKLSAgICB3ZWJQYWdl
UHJveHktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwotICAgIHBhZ2VWaWV3LT5ldmVudEhhbmRs
ZXIoKS0+c2V0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZShpbnRlcmFjdGlvbkVuZ2luZS5kYXRh
KCkpOwotCi0gICAgLy8gVHJpZ2dlciBzZXR0aW5nIG9mIGNvcnJlY3QgdmlzaWJpbGl0eSBmbGFn
cyBhZnRlciBldmVyeXRoaW5nIHdhcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLgotICAgIF9x
X29uVmlzaWJsZUNoYW5nZWQoKTsKLX0KLQogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0
TmVlZHNEaXNwbGF5KCkKIHsKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CkBAIC0xODcsMjIgKzE0
Niw2IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldE5lZWRzRGlzcGxheSgpCiAgICAg
cS0+cGFnZSgpLT51cGRhdGUoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRl
Ojpsb2FkRGlkQ29tbWl0KCkKLXsKLSAgICAvLyBEdWUgdG8gZW50ZXJpbmcgcHJvdmlzaW9uYWwg
bG9hZCBiZWZvcmUgY29tbWl0dGluZywgd2UKLSAgICAvLyBtaWdodCBhY3R1YWxseSBiZSBzdXNw
ZW5kZWQgaGVyZS4KLQotICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IHRydWU7Ci19Ci0K
LXZvaWQgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6ZGlkRmluaXNoRmlyc3ROb25FbXB0eUxh
eW91dCgpCi17Ci0gICAgaWYgKCFwYWdlSXNTdXNwZW5kZWQpIHsKLSAgICAgICAgaXNUcmFuc2l0
aW9uaW5nVG9OZXdQYWdlID0gZmFsc2U7Ci0gICAgICAgIHBvc3RUcmFuc2l0aW9uU3RhdGUtPmFw
cGx5KCk7Ci0gICAgfQotfQotCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9vbkljb25D
aGFuZ2VkRm9yUGFnZVVSTChjb25zdCBRVXJsJiBwYWdlVVJMLCBjb25zdCBRVXJsJiBpY29uVVJM
KQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKQEAgLTIxMiw2MSArMTU1LDExIEBAIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX29uSWNvbkNoYW5nZWRGb3JQYWdlVVJMKGNvbnN0IFFV
cmwmIHBhZ2VVUkwsIGNvbnN0CiAgICAgc2V0SWNvbihpY29uVVJMKTsKIH0KIAotdm9pZCBRUXVp
Y2tXZWJWaWV3VG91Y2hQcml2YXRlOjpfcV9zdXNwZW5kKCkKLXsKLSAgICBwYWdlSXNTdXNwZW5k
ZWQgPSB0cnVlOwotfQotCi12b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6Ol9xX3Jlc3Vt
ZSgpCi17Ci0gICAgcGFnZUlzU3VzcGVuZGVkID0gZmFsc2U7Ci0KLSAgICBpZiAoaXNUcmFuc2l0
aW9uaW5nVG9OZXdQYWdlKSB7Ci0gICAgICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IGZh
bHNlOwotICAgICAgICBwb3N0VHJhbnNpdGlvblN0YXRlLT5hcHBseSgpOwotICAgIH0KLQotICAg
IHVwZGF0ZVZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKCk7Ci19Ci0KLXZvaWQgUVF1aWNrV2Vi
Vmlld1RvdWNoUHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBuZXdT
aXplKQotewotICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKLSAgICAvLyBGSVhNRTogV2UgcHJvYmFi
bHkgd2FudCB0byBoYW5kbGUgc3VzcGVuZCBoZXJlIGFzIHdlbGwKLSAgICBpZiAoaXNUcmFuc2l0
aW9uaW5nVG9OZXdQYWdlKSB7Ci0gICAgICAgIHBvc3RUcmFuc2l0aW9uU3RhdGUtPmNvbnRlbnRz
U2l6ZSA9IG5ld1NpemU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwYWdlVmlldy0+
c2V0Q29udGVudHNTaXplKG5ld1NpemUpOwotICAgIHEtPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9y
dEluZm8oKS0+ZGlkVXBkYXRlQ29udGVudHNTaXplKCk7Ci19Ci0KLXZvaWQgUVF1aWNrV2ViVmll
d1RvdWNoUHJpdmF0ZTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXJndW1lbnRzJiBhcmdzKQotewotICAgIHZpZXdwb3J0QXJndW1lbnRzID0gYXJn
czsKLQotICAgIGlmIChpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGludGVyYWN0aW9uRW5naW5lLT5hcHBseUNvbnN0cmFpbnRzKGNvbXB1dGVWaWV3cG9y
dENvbnN0cmFpbnRzKCkpOwotfQotCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3QoKQogewogICAgIG5hdmlnYXRpb25IaXN0b3J5LT5kLT5yZXNldCgp
OwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IFFQb2ludCYgcG9zKQotewotICAgIGlmIChpc1RyYW5zaXRpb25pbmdUb05ld1Bh
Z2UpIHsKLSAgICAgICAgcG9zdFRyYW5zaXRpb25TdGF0ZS0+cG9zaXRpb24gPSBwb3M7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnRlcmFjdGlvbkVuZ2luZS0+cGFnZVBvc2l0aW9u
UmVxdWVzdChwb3MpOwotfQotCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpwcm9jZXNzRGlk
Q3Jhc2goKQogewogICAgIGVtaXQgcV9wdHItPm5hdmlnYXRpb25TdGF0ZUNoYW5nZWQoKTsKQEAg
LTMwMSwyNCArMTk0LDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aGFuZGxlRG93bmxv
YWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogICAgIGNvbnRleHQtPmRvd25sb2Fk
TWFuYWdlcigpLT5hZGREb3dubG9hZChkb3dubG9hZCwgZG93bmxvYWRJdGVtKTsKIH0KIAotdm9p
ZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBbmRT
Y2FsZSgpCi17Ci0gICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSB3ZWJQYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCk7Ci0gICAgaWYgKCFkcmF3aW5nQXJlYSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGNvbnN0IFFSZWN0RiB2aXNpYmxlUmVj
dEluQ1NTQ29vcmRpbmF0ZXMgPSBxLT5tYXBSZWN0VG9XZWJDb250ZW50KHEtPmJvdW5kaW5nUmVj
dCgpKS5pbnRlcnNlY3RlZChwYWdlVmlldy0+Ym91bmRpbmdSZWN0KCkpOwotICAgIGZsb2F0IHNj
YWxlID0gcGFnZVZpZXctPmNvbnRlbnRzU2NhbGUoKTsKLQotICAgIFFSZWN0IGFsaWduZWRWaXNp
YmxlQ29udGVudFJlY3QgPSB2aXNpYmxlUmVjdEluQ1NTQ29vcmRpbmF0ZXMudG9BbGlnbmVkUmVj
dCgpOwotICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29udGVudHNSZWN0QW5kU2NhbGUoYWxp
Z25lZFZpc2libGVDb250ZW50UmVjdCwgc2NhbGUpOwotCi0gICAgLy8gRklYTUU6IE9uY2Ugd2Ug
c3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUsIHRoaXMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwg
dGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZC4KLSAgICB3ZWJQYWdl
UHJveHktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGFsaWduZWRWaXNpYmxlQ29udGVudFJl
Y3QpOwotICAgIHEtPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ3Vy
cmVudFNjYWxlKCk7Ci19Ci0KIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3ZpZXdwb3J0
VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYgdHJhamVjdG9yeVZlY3RvcikK
IHsKICAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IHdlYlBhZ2VQcm94eS0+ZHJh
d2luZ0FyZWEoKTsKQEAgLTM0Myw0OCArMjE4LDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6X3Ffb25SZWNlaXZlZFJlc3BvbnNlRnJvbURvd25sb2FkKFFXZWJEb3dubG9hZEl0ZW0qIGQK
ICAgICBlbWl0IHEtPmV4cGVyaW1lbnRhbCgpLT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZEl0
ZW0pOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdEZXNrdG9wUHJpdmF0ZTo6dXBkYXRlVmlld3Bv
cnRTaXplKCkKLXsKLSAgICBRX1EoUVF1aWNrV2ViVmlldyk7Ci0gICAgUVNpemUgdmlld3BvcnRT
aXplID0gcS0+Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLnRvU2l6ZSgpOwotICAgIHBhZ2VWaWV3LT5z
ZXRDb250ZW50c1NpemUodmlld3BvcnRTaXplKTsKLSAgICAvLyBUaGUgZml4ZWQgbGF5b3V0IGlz
IGhhbmRsZWQgYnkgdGhlIEZyYW1lVmlldyBhbmQgdGhlIGRyYXdpbmcgYXJlYSBkb2Vzbid0IGJl
aGF2ZSBkaWZmZXJlbnRseQotICAgIC8vIHdoZXRoZXIgaXRzIGZpeGVkIG9yIG5vdC4gV2Ugc3Rp
bGwgbmVlZCB0byB0ZWxsIHRoZSBkcmF3aW5nIGFyZWEgd2hpY2ggcGFydCBvZiBpdAotICAgIC8v
IGhhcyB0byBiZSByZW5kZXJlZCBvbiB0aWxlcywgYW5kIGluIGRlc2t0b3AgbW9kZSBpdCdzIGFs
bCBvZiBpdC4KLSAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250
ZW50c1JlY3RBbmRTY2FsZShJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIDEpOwot
fQotCi12b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgp
Ci17Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIFFTaXplIHZpZXdwb3J0U2l6ZSA9IHEt
PmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsKLQotICAgIGlmICh2aWV3cG9ydFNpemUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBMZXQgdGhlIFdlYlByb2Nlc3Mg
a25vdyBhYm91dCB0aGUgbmV3IHZpZXdwb3J0IHNpemUsIHNvIHRoYXQKLSAgICAvLyBpdCBjYW4g
cmVzaXplIHRoZSBjb250ZW50IGFjY29yZGluZ2x5LgotICAgIHdlYlBhZ2VQcm94eS0+c2V0Vmll
d3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0KLSAgICBpbnRlcmFjdGlvbkVuZ2luZS0+YXBwbHlD
b25zdHJhaW50cyhjb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpKTsKLSAgICB1cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RBbmRTY2FsZSgpOwotfQotCi12b2lkIFFRdWlja1dlYlZpZXdUb3VjaFBy
aXZhdGU6OlBvc3RUcmFuc2l0aW9uU3RhdGU6OmFwcGx5KCkKLXsKLSAgICBwLT5pbnRlcmFjdGlv
bkVuZ2luZS0+cmVzZXQoKTsKLSAgICBwLT5pbnRlcmFjdGlvbkVuZ2luZS0+YXBwbHlDb25zdHJh
aW50cyhwLT5jb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpKTsKLSAgICBwLT5pbnRlcmFjdGlv
bkVuZ2luZS0+cGFnZVBvc2l0aW9uUmVxdWVzdChwb3NpdGlvbik7Ci0KLSAgICBpZiAoY29udGVu
dHNTaXplLmlzVmFsaWQoKSkgewotICAgICAgICBwLT5wYWdlVmlldy0+c2V0Q29udGVudHNTaXpl
KGNvbnRlbnRzU2l6ZSk7Ci0gICAgICAgIHAtPnFfcHRyLT5leHBlcmltZW50YWwoKS0+dmlld3Bv
cnRJbmZvKCktPmRpZFVwZGF0ZUNvbnRlbnRzU2l6ZSgpOwotICAgIH0KLQotICAgIHBvc2l0aW9u
ID0gUVBvaW50KCk7Ci0gICAgY29udGVudHNTaXplID0gUVNpemUoKTsKLX0KLQogUXRWaWV3cG9y
dEludGVyYWN0aW9uRW5naW5lOjpDb25zdHJhaW50cyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Y29t
cHV0ZVZpZXdwb3J0Q29uc3RyYWludHMoKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKQEAg
LTYyMCw2ICs0NTMsMTczIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRpZFJlY2VpdmVN
ZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0IFN0cmluZyYKICAgICBlbWl0IHFfcHRy
LT5leHBlcmltZW50YWwoKS0+bWVzc2FnZVJlY2VpdmVkKHZhcmlhbnRNYXApOwogfQogCitRUXVp
Y2tXZWJWaWV3RGVza3RvcFByaXZhdGU6OlFRdWlja1dlYlZpZXdEZXNrdG9wUHJpdmF0ZShRUXVp
Y2tXZWJWaWV3KiB2aWV3cG9ydCkKKyAgICA6IFFRdWlja1dlYlZpZXdQcml2YXRlKHZpZXdwb3J0
KQoreworfQorCit2b2lkIFFRdWlja1dlYlZpZXdEZXNrdG9wUHJpdmF0ZTo6aW5pdGlhbGl6ZShX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorewor
ICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplKGNvbnRleHRSZWYsIHBhZ2VHcm91
cFJlZik7CisgICAgZW5hYmxlTW91c2VFdmVudHMoKTsKKworICAgIC8vIFRyaWdnZXIgc2V0dGlu
ZyBvZiBjb3JyZWN0IHZpc2liaWxpdHkgZmxhZ3MgYWZ0ZXIgZXZlcnl0aGluZyB3YXMgYWxsb2Nh
dGVkIGFuZCBpbml0aWFsaXplZC4KKyAgICBfcV9vblZpc2libGVDaGFuZ2VkKCk7Cit9CisKK3Zv
aWQgUVF1aWNrV2ViVmlld0Rlc2t0b3BQcml2YXRlOjp1cGRhdGVWaWV3cG9ydFNpemUoKQorewor
ICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKKyAgICBRU2l6ZSB2aWV3cG9ydFNpemUgPSBxLT5ib3Vu
ZGluZ1JlY3QoKS5zaXplKCkudG9TaXplKCk7CisgICAgcGFnZVZpZXctPnNldENvbnRlbnRzU2l6
ZSh2aWV3cG9ydFNpemUpOworICAgIC8vIFRoZSBmaXhlZCBsYXlvdXQgaXMgaGFuZGxlZCBieSB0
aGUgRnJhbWVWaWV3IGFuZCB0aGUgZHJhd2luZyBhcmVhIGRvZXNuJ3QgYmVoYXZlIGRpZmZlcmVu
dGx5CisgICAgLy8gd2hldGhlciBpdHMgZml4ZWQgb3Igbm90LiBXZSBzdGlsbCBuZWVkIHRvIHRl
bGwgdGhlIGRyYXdpbmcgYXJlYSB3aGljaCBwYXJ0IG9mIGl0CisgICAgLy8gaGFzIHRvIGJlIHJl
bmRlcmVkIG9uIHRpbGVzLCBhbmQgaW4gZGVza3RvcCBtb2RlIGl0J3MgYWxsIG9mIGl0LgorICAg
IHdlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdEFuZFNj
YWxlKEludFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKSwgMSk7Cit9CisKK1FRdWlja1dl
YlZpZXdUb3VjaFByaXZhdGU6OlFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGUoUVF1aWNrV2ViVmll
dyogdmlld3BvcnQpCisgICAgOiBRUXVpY2tXZWJWaWV3UHJpdmF0ZSh2aWV3cG9ydCkKKyAgICAs
IGludGVyYWN0aW9uRW5naW5lKG5ldyBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmUodmlld3Bv
cnQsIHBhZ2VWaWV3LmRhdGEoKSkpCisgICAgLCBwb3N0VHJhbnNpdGlvblN0YXRlKGFkb3B0UHRy
KG5ldyBQb3N0VHJhbnNpdGlvblN0YXRlKHRoaXMpKSkKKyAgICAsIGlzVHJhbnNpdGlvbmluZ1Rv
TmV3UGFnZShmYWxzZSkKKyAgICAsIHBhZ2VJc1N1c3BlbmRlZChmYWxzZSkKK3sKKyAgICBRT2Jq
ZWN0Ojpjb25uZWN0KGludGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRTdXNw
ZW5kUmVxdWVzdGVkKCkpLCB2aWV3cG9ydCwgU0xPVChfcV9zdXNwZW5kKCkpKTsKKyAgICBRT2Jq
ZWN0Ojpjb25uZWN0KGludGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRSZXN1
bWVSZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX3Jlc3VtZSgpKSk7CisgICAgUU9iamVj
dDo6Y29ubmVjdChpbnRlcmFjdGlvbkVuZ2luZS5kYXRhKCksIFNJR05BTCh2aWV3cG9ydFRyYWpl
Y3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKSksIHZpZXdwb3J0LCBTTE9UKF9xX3Zp
ZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSk7Cit9CisKK1FR
dWlja1dlYlZpZXdUb3VjaFByaXZhdGU6On5RUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlKCkKK3sK
KyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+ZGlzY29ubmVjdCgpOworfQorCit2b2lkIFFRdWlja1dl
YlZpZXdUb3VjaFByaXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
UGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
aW5pdGlhbGl6ZShjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYpOworICAgIHdlYlBhZ2VQcm94eS0+
c2V0VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CisgICAgcGFnZVZpZXctPmV2ZW50SGFuZGxlcigpLT5z
ZXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKGludGVyYWN0aW9uRW5naW5lLmRhdGEoKSk7CisK
KyAgICAvLyBUcmlnZ2VyIHNldHRpbmcgb2YgY29ycmVjdCB2aXNpYmlsaXR5IGZsYWdzIGFmdGVy
IGV2ZXJ5dGhpbmcgd2FzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQuCisgICAgX3Ffb25WaXNp
YmxlQ2hhbmdlZCgpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OmxvYWRE
aWRDb21taXQoKQoreworICAgIC8vIER1ZSB0byBlbnRlcmluZyBwcm92aXNpb25hbCBsb2FkIGJl
Zm9yZSBjb21taXR0aW5nLCB3ZQorICAgIC8vIG1pZ2h0IGFjdHVhbGx5IGJlIHN1c3BlbmRlZCBo
ZXJlLgorCisgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlID0gdHJ1ZTsKK30KKwordm9pZCBR
UXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5b3V0KCkK
K3sKKyAgICBpZiAoIXBhZ2VJc1N1c3BlbmRlZCkgeworICAgICAgICBpc1RyYW5zaXRpb25pbmdU
b05ld1BhZ2UgPSBmYWxzZTsKKyAgICAgICAgcG9zdFRyYW5zaXRpb25TdGF0ZS0+YXBwbHkoKTsK
KyAgICB9Cit9CisKK3ZvaWQgUVF1aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6ZGlkQ2hhbmdlVmll
d3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmdzKQor
eworICAgIHZpZXdwb3J0QXJndW1lbnRzID0gYXJnczsKKworICAgIGlmIChpc1RyYW5zaXRpb25p
bmdUb05ld1BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGludGVyYWN0aW9uRW5naW5lLT5h
cHBseUNvbnN0cmFpbnRzKGNvbXB1dGVWaWV3cG9ydENvbnN0cmFpbnRzKCkpOworfQorCit2b2lk
IFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgpCit7CisgICAg
UV9RKFFRdWlja1dlYlZpZXcpOworICAgIFFTaXplIHZpZXdwb3J0U2l6ZSA9IHEtPmJvdW5kaW5n
UmVjdCgpLnNpemUoKS50b1NpemUoKTsKKworICAgIGlmICh2aWV3cG9ydFNpemUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBMZXQgdGhlIFdlYlByb2Nlc3Mga25vdyBhYm91
dCB0aGUgbmV3IHZpZXdwb3J0IHNpemUsIHNvIHRoYXQKKyAgICAvLyBpdCBjYW4gcmVzaXplIHRo
ZSBjb250ZW50IGFjY29yZGluZ2x5LgorICAgIHdlYlBhZ2VQcm94eS0+c2V0Vmlld3BvcnRTaXpl
KHZpZXdwb3J0U2l6ZSk7CisKKyAgICBpbnRlcmFjdGlvbkVuZ2luZS0+YXBwbHlDb25zdHJhaW50
cyhjb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpKTsKKyAgICB1cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RBbmRTY2FsZSgpOworfQorCit2b2lkIFFRdWlja1dlYlZpZXdUb3VjaFByaXZhdGU6Ol9x
X3N1c3BlbmQoKQoreworICAgIHBhZ2VJc1N1c3BlbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQgUVF1
aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6X3FfcmVzdW1lKCkKK3sKKyAgICBwYWdlSXNTdXNwZW5k
ZWQgPSBmYWxzZTsKKworICAgIGlmIChpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UpIHsKKyAgICAg
ICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlID0gZmFsc2U7CisgICAgICAgIHBvc3RUcmFuc2l0
aW9uU3RhdGUtPmFwcGx5KCk7CisgICAgfQorCisgICAgdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
QW5kU2NhbGUoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlOjpwYWdlRGlk
UmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQmIHBvcykKK3sKKyAgICBpZiAoaXNUcmFuc2l0aW9u
aW5nVG9OZXdQYWdlKSB7CisgICAgICAgIHBvc3RUcmFuc2l0aW9uU3RhdGUtPnBvc2l0aW9uID0g
cG9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPnBh
Z2VQb3NpdGlvblJlcXVlc3QocG9zKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2
YXRlOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUpCit7CisgICAg
UV9RKFFRdWlja1dlYlZpZXcpOworICAgIC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIGhh
bmRsZSBzdXNwZW5kIGhlcmUgYXMgd2VsbAorICAgIGlmIChpc1RyYW5zaXRpb25pbmdUb05ld1Bh
Z2UpIHsKKyAgICAgICAgcG9zdFRyYW5zaXRpb25TdGF0ZS0+Y29udGVudHNTaXplID0gbmV3U2l6
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBhZ2VWaWV3LT5zZXRDb250ZW50c1Np
emUobmV3U2l6ZSk7CisgICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdwb3J0SW5mbygpLT5kaWRV
cGRhdGVDb250ZW50c1NpemUoKTsKK30KKwordm9pZCBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRl
Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZSgpCit7CisgICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEgPSB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCk7CisgICAgaWYg
KCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUV9RKFFRdWlja1dlYlZpZXcp
OworICAgIGNvbnN0IFFSZWN0RiB2aXNpYmxlUmVjdEluQ1NTQ29vcmRpbmF0ZXMgPSBxLT5tYXBS
ZWN0VG9XZWJDb250ZW50KHEtPmJvdW5kaW5nUmVjdCgpKS5pbnRlcnNlY3RlZChwYWdlVmlldy0+
Ym91bmRpbmdSZWN0KCkpOworICAgIGZsb2F0IHNjYWxlID0gcGFnZVZpZXctPmNvbnRlbnRzU2Nh
bGUoKTsKKworICAgIFFSZWN0IGFsaWduZWRWaXNpYmxlQ29udGVudFJlY3QgPSB2aXNpYmxlUmVj
dEluQ1NTQ29vcmRpbmF0ZXMudG9BbGlnbmVkUmVjdCgpOworICAgIGRyYXdpbmdBcmVhLT5zZXRW
aXNpYmxlQ29udGVudHNSZWN0QW5kU2NhbGUoYWxpZ25lZFZpc2libGVDb250ZW50UmVjdCwgc2Nh
bGUpOworCisgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBzdXNwZW5kIGFuZCByZXN1bWUs
IHRoaXMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwgdGhlIHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBw
YWdlIGlzIHN1c3BlbmRlZC4KKyAgICB3ZWJQYWdlUHJveHktPnNldEZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0KGFsaWduZWRWaXNpYmxlQ29udGVudFJlY3QpOworICAgIHEtPmV4cGVyaW1lbnRhbCgp
LT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ3VycmVudFNjYWxlKCk7Cit9CisKK3ZvaWQgUVF1
aWNrV2ViVmlld1RvdWNoUHJpdmF0ZTo6UG9zdFRyYW5zaXRpb25TdGF0ZTo6YXBwbHkoKQorewor
ICAgIHAtPmludGVyYWN0aW9uRW5naW5lLT5yZXNldCgpOworICAgIHAtPmludGVyYWN0aW9uRW5n
aW5lLT5hcHBseUNvbnN0cmFpbnRzKHAtPmNvbXB1dGVWaWV3cG9ydENvbnN0cmFpbnRzKCkpOwor
ICAgIHAtPmludGVyYWN0aW9uRW5naW5lLT5wYWdlUG9zaXRpb25SZXF1ZXN0KHBvc2l0aW9uKTsK
KworICAgIGlmIChjb250ZW50c1NpemUuaXNWYWxpZCgpKSB7CisgICAgICAgIHAtPnBhZ2VWaWV3
LT5zZXRDb250ZW50c1NpemUoY29udGVudHNTaXplKTsKKyAgICAgICAgcC0+cV9wdHItPmV4cGVy
aW1lbnRhbCgpLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ29udGVudHNTaXplKCk7CisgICAg
fQorCisgICAgcG9zaXRpb24gPSBRUG9pbnQoKTsKKyAgICBjb250ZW50c1NpemUgPSBRU2l6ZSgp
OworfQorCiAvKiEKICAgICBccW1sc2lnbmFsIFdlYlZpZXc6Om9uTmF2aWdhdGlvblJlcXVlc3Rl
ZChyZXF1ZXN0KQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125133</attachid>
            <date>2012-02-02 08:00:25 -0800</date>
            <delta_ts>2012-02-02 11:18:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77632-20120202165609.patch</filename>
            <type>text/plain</type>
            <size>58317</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ3MWFlMDBkZmRlNzQ5
ZjY0ZGJjMGEyNWE2ZTZhY2MyYzlmZGZhZC4uOTdhZDMwZWVmYjEyMzc5ZWRiMjc3ZDRlMmJjMDlj
OWU5MDlhMzVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk2IEBACiAyMDEyLTAyLTAyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKKyAgICAgICAgW1F0
XSBTcGxpdCBRUXVpY2tXZWJWaWV3UHJpdmF0ZSBpbiB0d28gY2xhc3NlcywgZm9yIGRlc2t0b3Ag
YW5kIHRvdWNoIGJlaGF2aW9yLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc2MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBsYWNlIHRoZSBydW50aW1lIHByb3BlcnR5IHNldHRpbmcgdGhlIGRlc2t0
b3AgYmVoYXZpb3Igb24gZWFjaCBpbnN0YW5jZQorICAgICAgICBieSBhIHN0YXRpYyBib29sZWFu
IGNvbnRyb2xsaW5nIHRoZSBiZWhhdmlvciB1c2VkIGJ5IGZ1dHVyZSBjcmVhdGVkIFdlYlZpZXdz
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgTGV0IG9ubHkgc2V0Q29udGVudHNTaXplIGNvbnRyb2wgdGhlIHNpemUgb2YgdGhlIGRyYXdp
bmcgYXJlYSBpbnN0ZWFkIG9mIGRlZmVycmluZworICAgICAgICBpdCB1bnRpbCBnZW9tZXRyeUNo
YW5nZWQgaXMgY2FsbGVkLgorICAgICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dl
YlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2Vf
cC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaDoKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAoY3JlYXRlUHJpdmF0ZU9iamVjdCk6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZTo6UVF1aWNrV2ViVmlld0xlZ2FjeVByaXZh
dGUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OlFRdWlja1dlYlZp
ZXdGbGlja2FibGVQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2
YXRlOjp+UVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGUpOgorICAgICAgICAoUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjp+UVF1aWNrV2ViVmlld1ByaXZhdGUpOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZh
dGU6OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6
OmluaXRpYWxpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Omxv
YWREaWRDb21taXQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OmRp
ZEZpbmlzaEZpcnN0Tm9uRW1wdHlMYXlvdXQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNr
YWJsZVByaXZhdGU6Ol9xX3N1c3BlbmQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJs
ZVByaXZhdGU6Ol9xX3Jlc3VtZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJp
dmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdGbGlj
a2FibGVQcml2YXRlOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMpOgorICAgICAgICAoUVF1
aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoUVF1
aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdEFuZFNj
YWxlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjp1cGRhdGVWaWV3cG9y
dFNpemUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OnVwZGF0ZVZp
ZXdwb3J0U2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6UG9z
dFRyYW5zaXRpb25TdGF0ZTo6YXBwbHkpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0V4cGVyaW1l
bnRhbDo6c2V0RmxpY2thYmxlVmlld3BvcnRFbmFibGVkKToKKyAgICAgICAgVGhlIHN3aXRjaCBp
cyBub3cgYSBzdGF0aWMgZnVuY3Rpb24gdGhhdCBoYXMgdG8gYmUgY2FsbGVkIGJlZm9yZSBhIFdl
YlZpZXcKKyAgICAgICAgaXMgY3JlYXRlZC4gVGhlIHN3aXRjaCBjYW4gaGF2ZSBpdCdzIGRlZmF1
bHQgZGVmaW5lZCBieSB0aGUgZGVwbG95aW5nIHBsYXRmb3JtLgorICAgICAgICAoUVF1aWNrV2Vi
Vmlld0V4cGVyaW1lbnRhbDo6ZmxpY2thYmxlVmlld3BvcnRFbmFibGVkKToKKyAgICAgICAgKFFR
dWlja1dlYlZpZXc6OlFRdWlja1dlYlZpZXcpOgorICAgICAgICBPbiBjcmVhdGlvbiBvZiBRUXVp
Y2tXZWJWaWV3LCB0aGUgc3RhdGljIGJvb2xlYW4gaXMgcmVhZCB0byBrbm93IGlmIHdlIHdhbnQK
KyAgICAgICAgYSBRUXVpY2tXZWJWaWV3VG91Y2hQcml2YXRlIG9yIGEgUVF1aWNrV2ViVmlld0Rl
c2t0b3BQcml2YXRlLgorICAgICAgICAoUVF1aWNrV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaDoKKyAgICAgICAgKFFRdWlja1dl
YlZpZXdQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpsb2FkRGlkQ29t
bWl0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRGaW5pc2hGaXJzdE5vbkVt
cHR5TGF5b3V0KToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VWaWV3
cG9ydFByb3BlcnRpZXMpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUpOgorICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0
ZVZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3VzcGVu
ZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAgICAg
KFFRdWlja1dlYlZpZXdQcml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFFR
dWlja1dlYlZpZXdMZWdhY3lQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdGbGlja2Fi
bGVQcml2YXRlKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjp2aWV3
cG9ydEludGVyYWN0aW9uRW5naW5lKToKKyAgICAgICAgKFBvc3RUcmFuc2l0aW9uU3RhdGUpOgor
ICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OlBvc3RUcmFuc2l0aW9uU3Rh
dGU6OlBvc3RUcmFuc2l0aW9uU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdl
YnZpZXdwb3J0aW5mby5jcHA6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjpjdXJyZW50U2Nh
bGUpOgorICAgICAgICAoUVdlYlZpZXdwb3J0SW5mbzo6ZGV2aWNlUGl4ZWxSYXRpbyk6CisgICAg
ICAgIChRV2ViVmlld3BvcnRJbmZvOjppbml0aWFsU2NhbGUpOgorICAgICAgICAoUVdlYlZpZXdw
b3J0SW5mbzo6bWluaW11bVNjYWxlKToKKyAgICAgICAgKFFXZWJWaWV3cG9ydEluZm86Om1heGlt
dW1TY2FsZSk6CisgICAgICAgIChRV2ViVmlld3BvcnRJbmZvOjppc1NjYWxhYmxlKToKKyAgICAg
ICAgKFFXZWJWaWV3cG9ydEluZm86OmxheW91dFNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL0Rlc2t0b3BXZWJWaWV3LnFtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0
b3BCZWhhdmlvci90c3RfaXRlbVNlbGVjdG9yLnFtbDogUmVuYW1lZAorICAgICAgICBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
aXRlbVNlbGVjdG9yLnFtbC4KKyAgICAgICAgTW92ZWQgdG8gRGVza3RvcEJlaGF2aW9yIGluc3Rl
YWQgb2YgdXNpbmcgYSBEZXNrdG9wV2ViVmlldyB0byB3b3JrYXJvdW5kIHRoZSB0b3VjaCBldmVu
dCBsaW1pdGF0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMv
RGVza3RvcEJlaGF2aW9yL3RzdF9saW5rSG92ZXJlZC5xbWw6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2xvYWRIdG1sLnFtbDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlv
ci90c3RfbWVzc2FnaW5nLnFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbmF2aWdhdGlvblJlcXVlc3RlZC5xbWw6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5EZXNrdG9wQmVo
YXZpb3IucHJvOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL3FtbHRlc3RzLldlYlZpZXcucHJvOiBDb3BpZWQKKyAgICAgICAgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnByby4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybzoKKyAgICAg
ICAgU3BsaXQgcW1sdGVzdHMgaW4gdHdvIGV4ZWN1dGFibGVzLCB0c3RfcW1sdGVzdHNfRGVza3Rv
cEJlaGF2aW9yIGFuZCB0c3RfcW1sdGVzdHNfV2ViVmlldy4KKyAgICAgICAgVGhlIGZvcm1lciBy
dW5zIHdpdGhvdXQgc2V0RmxpY2thYmxlVmlld3BvcnRFbmFibGVkIGFuZCB0aGUgbGF0ZXIgZG9l
cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3RzdF9xbWx0ZXN0
cy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6UXRXZWJQ
YWdlRXZlbnRIYW5kbGVyKToKKworMjAxMi0wMi0wMiAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPgorCiAgICAgICAgIFtRdF0gUmVuYW1lIGNvbnRlbnQqIHRv
IGNvbnRlbnRzKiBpbiBRUXVpY2tXZWJQYWdlLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2MjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKaW5kZXggZDEwMWQ4MmQ4ODQxYzRiNTk5MjBj
ZDgyYjRhYTA4MzdiNDU2NTkzZi4uMjVmNjIxZmFjNWJhMWE2ZTdiYjdlNDMyNTBjMTUwMjllNWQ1
MmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnBhZ2UuY3BwCkBAIC01MSwxNyArNTEsNiBAQCBRdFNHVXBkYXRlUXVldWUgKlFRdWlja1dlYlBh
Z2U6OnNjZW5lR3JhcGhVcGRhdGVRdWV1ZSgpIGNvbnN0CiAgICAgcmV0dXJuICZkLT5zZ1VwZGF0
ZVF1ZXVlOwogfQogCi12b2lkIFFRdWlja1dlYlBhZ2U6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBR
UmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZEdlb21ldHJ5KQotewotICAgIFFR
dWlja0l0ZW06Omdlb21ldHJ5Q2hhbmdlZChuZXdHZW9tZXRyeSwgb2xkR2VvbWV0cnkpOwotCi0g
ICAgaWYgKCFkLT51c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKQot
ICAgICAgICBkLT5zZXREcmF3aW5nQXJlYVNpemUobmV3R2VvbWV0cnkuc2l6ZSgpLnRvU2l6ZSgp
KTsKLX0KLQogUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBhZ2VQcml2YXRlKFFRdWlj
a1dlYlBhZ2UqIHEsIFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0SXRlbSkKICAgICA6IHEocSkKICAg
ICAsIHZpZXdwb3J0SXRlbSh2aWV3cG9ydEl0ZW0pCkBAIC03MCw3ICs1OSw2IEBAIFFRdWlja1dl
YlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZShRUXVpY2tXZWJQYWdlKiBxLCBRUXVp
Y2tXZWJWaWV3KiB2aWV3CiAgICAgLCBwYWludGluZ0lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAg
LCBtX3BhaW50Tm9kZSgwKQogICAgICwgY29udGVudHNTY2FsZSgxKQotICAgICwgdXNlVHJhZGl0
aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGZhbHNlKQogewogfQogCkBAIC0yMzYsMTYgKzIyNCw2IEBA
IFFTR05vZGUqIFFRdWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZShRU0dOb2RlKiBvbGROb2Rl
LCBVcGRhdGVQYWludE5vZGVEYXRhKikKICAgICByZXR1cm4gcHJveHlOb2RlOwogfQogCi1ib29s
IFFRdWlja1dlYlBhZ2U6OnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSBjb25zdAot
ewotICAgIHJldHVybiBkLT51c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXI7Ci19Ci0KLXZv
aWQgUVF1aWNrV2ViUGFnZTo6c2V0VXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29s
IGVuYWJsZSkKLXsKLSAgICBkLT51c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIgPSBlbmFi
bGU7Ci19Ci0KIFF0V2ViUGFnZUV2ZW50SGFuZGxlciogUVF1aWNrV2ViUGFnZTo6ZXZlbnRIYW5k
bGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+ZXZlbnRIYW5kbGVyLmRhdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCmluZGV4
IDdjODZlZjM3YTQ0NjMzYWJjMDZiYTEyNGE0NGFlYTFjMWU4MzdkMzYuLjhjNzEwYzNiYzY4ZmRi
YTc3ZDNmNzE2MmJhYzdjYmY3OGUwNmU1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaApAQCAtNDksMTYgKzQ5LDEyIEBAIHB1Ymxp
YzoKICAgICBRVHJhbnNmb3JtIHRyYW5zZm9ybUZyb21JdGVtKCkgY29uc3Q7CiAgICAgUVRyYW5z
Zm9ybSB0cmFuc2Zvcm1Ub0l0ZW0oKSBjb25zdDsKIAotICAgIGJvb2wgdXNlc1RyYWRpdGlvbmFs
RGVza3RvcEJlaGF2aW91cigpIGNvbnN0OwotICAgIHZvaWQgc2V0VXNlc1RyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7Ci0KICAgICBRdFdlYlBhZ2VFdmVudEhhbmRsZXIq
IGV2ZW50SGFuZGxlcigpIGNvbnN0OwogCiAgICAgLy8gSW50ZXJuYWwuIFRvIGJlIHJlbW92ZWQg
c29vbi4KICAgICBXZWJLaXQ6OlF0U0dVcGRhdGVRdWV1ZSogc2NlbmVHcmFwaFVwZGF0ZVF1ZXVl
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlDaGFuZ2Vk
KGNvbnN0IFFSZWN0RiYsIGNvbnN0IFFSZWN0RiYpOwogICAgIHZpcnR1YWwgUVNHTm9kZSogdXBk
YXRlUGFpbnROb2RlKFFTR05vZGUqLCBVcGRhdGVQYWludE5vZGVEYXRhKik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBh
Z2VfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2Vf
cF9wLmgKaW5kZXggNTc5YjJkZDA4YTllY2U1YjdkODVhNzRhMmQyMTIwMTMxNGJkNjNlNS4uODhj
NzFlZThkNjEzYTcwZGVkOTMyMTNmZWI0NWY4ZDI1M2IzODE3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaApAQCAtNTYsNyAr
NTYsNiBAQCBwdWJsaWM6CiAKICAgICBRU2l6ZUYgY29udGVudHNTaXplOwogICAgIHFyZWFsIGNv
bnRlbnRzU2NhbGU7Ci0gICAgYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXI7CiB9
OwogCiAjZW5kaWYgLy8gcXF1aWNrd2VicGFnZV9wX3BfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNjQ4NWJmNjkyODgzZTQ4
NTExOTZiYTMyYjI5MjIxMDVjODAyMmU2Yi4uNWMwMGQxMTYwMDRlZjE1MmMxZjRhNjQ5ZmIxN2Jl
ZjhkYWJkNjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnZpZXcuY3BwCkBAIC01NSw2ICs1NSwzNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAorc3RhdGljIGJvb2wgc19mbGlja2FibGVWaWV3cG9ydEVuYWJsZWQgPSB0cnVlOwor
CitzdGF0aWMgUVF1aWNrV2ViVmlld1ByaXZhdGUqIGNyZWF0ZVByaXZhdGVPYmplY3QoUVF1aWNr
V2ViVmlldyogcHVibGljT2JqZWN0KQoreworICAgIGlmIChzX2ZsaWNrYWJsZVZpZXdwb3J0RW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuIG5ldyBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZShw
dWJsaWNPYmplY3QpOworICAgIHJldHVybiBuZXcgUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGUo
cHVibGljT2JqZWN0KTsKK30KKworUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OlFRdWlja1dl
YlZpZXdMZWdhY3lQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KQorICAgIDogUVF1aWNr
V2ViVmlld1ByaXZhdGUodmlld3BvcnQpCit7Cit9CisKK1FRdWlja1dlYlZpZXdGbGlja2FibGVQ
cml2YXRlOjpRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3
cG9ydCkKKyAgICA6IFFRdWlja1dlYlZpZXdQcml2YXRlKHZpZXdwb3J0KQorICAgICwgaW50ZXJh
Y3Rpb25FbmdpbmUobmV3IFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSh2aWV3cG9ydCwgcGFn
ZVZpZXcuZGF0YSgpKSkKKyAgICAsIHBvc3RUcmFuc2l0aW9uU3RhdGUoYWRvcHRQdHIobmV3IFBv
c3RUcmFuc2l0aW9uU3RhdGUodGhpcykpKQorICAgICwgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdl
KGZhbHNlKQorICAgICwgcGFnZUlzU3VzcGVuZGVkKGZhbHNlKQoreworICAgIFFPYmplY3Q6OmNv
bm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwoY29udGVudFN1c3BlbmRSZXF1
ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX3N1c3BlbmQoKSkpOworICAgIFFPYmplY3Q6OmNv
bm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwoY29udGVudFJlc3VtZVJlcXVl
c3RlZCgpKSwgdmlld3BvcnQsIFNMT1QoX3FfcmVzdW1lKCkpKTsKKyAgICBRT2JqZWN0Ojpjb25u
ZWN0KGludGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKHZpZXdwb3J0VHJhamVjdG9yeVZl
Y3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSwgdmlld3BvcnQsIFNMT1QoX3Ffdmlld3BvcnRU
cmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJikpKTsKK30KKworUVF1aWNrV2Vi
Vmlld0ZsaWNrYWJsZVByaXZhdGU6On5RUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZSgpCit7
CisgICAgaW50ZXJhY3Rpb25FbmdpbmUtPmRpc2Nvbm5lY3QoKTsKK30KKwogUVF1aWNrV2ViVmll
d1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KQog
ICAgIDogcV9wdHIodmlld3BvcnQpCiAgICAgLCBhbGVydERpYWxvZygwKQpAQCAtNjMsOSArOTQs
NiBAQCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNrV2ViVmlld1ByaXZhdGUoUVF1aWNrV2Vi
Vmlldyogdmlld3BvcnQpCiAgICAgLCBhdXRoZW50aWNhdGlvbkRpYWxvZygwKQogICAgICwgY2Vy
dGlmaWNhdGVWZXJpZmljYXRpb25EaWFsb2coMCkKICAgICAsIGl0ZW1TZWxlY3RvcigwKQotICAg
ICwgcG9zdFRyYW5zaXRpb25TdGF0ZShhZG9wdFB0cihuZXcgUG9zdFRyYW5zaXRpb25TdGF0ZSh0
aGlzKSkpCi0gICAgLCBpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UoZmFsc2UpCi0gICAgLCBwYWdl
SXNTdXNwZW5kZWQoZmFsc2UpCiAgICAgLCBtX25hdmlnYXRvclF0T2JqZWN0RW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fcmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIoZmFsc2UpCiB7CkBAIC03Niw4ICsx
MDQsNiBAQCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNrV2ViVmlld1ByaXZhdGUoUVF1aWNr
V2ViVmlldyogdmlld3BvcnQpCiAKIFFRdWlja1dlYlZpZXdQcml2YXRlOjp+UVF1aWNrV2ViVmll
d1ByaXZhdGUoKQogewotICAgIGlmIChpbnRlcmFjdGlvbkVuZ2luZSkKLSAgICAgICAgaW50ZXJh
Y3Rpb25FbmdpbmUtPmRpc2Nvbm5lY3QoKTsKICAgICB3ZWJQYWdlUHJveHktPmNsb3NlKCk7CiB9
CiAKQEAgLTEwNiwxNSArMTMyLDEyIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRp
YWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAgUU9i
amVjdDo6Y29ubmVjdChxX3B0ciwgU0lHTkFMKHVybENoYW5nZWQoUVVybCkpLCBpY29uRGF0YWJh
c2UsIFNMT1QocmVxdWVzdEljb25Gb3JQYWdlVVJMKFFVcmwpKSk7CiAKICAgICAvLyBBbnkgcGFn
ZSBzZXR0aW5nIHNob3VsZCBwcmVmZXJyYWJsZSBiZSBzZXQgYmVmb3JlIGNyZWF0aW5nIHRoZSBw
YWdlLgotICAgIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihmYWxzZSk7CiAgICAg
d2ViUGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQodHJ1ZSk7CiAgICAgd2ViUGFnZVByb3h5LT5wYWdlR3JvdXAoKS0+
cHJlZmVyZW5jZXMoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CiAKICAgICBwYWdl
Q2xpZW50LmluaXRpYWxpemUocV9wdHIsIHBhZ2VWaWV3UHJpdmF0ZS0+ZXZlbnRIYW5kbGVyLmRh
dGEoKSwgJnVuZG9Db250cm9sbGVyKTsKICAgICB3ZWJQYWdlUHJveHktPmluaXRpYWxpemVXZWJQ
YWdlKCk7Ci0KLSAgICAvLyBUcmlnZ2VyIHNldHRpbmcgb2YgY29ycmVjdCB2aXNpYmlsaXR5IGZs
YWdzIGFmdGVyIGV2ZXJ5dGhpbmcgd2FzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQuCi0gICAg
X3Ffb25WaXNpYmxlQ2hhbmdlZCgpOworICAgIHVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQogCiB2
b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjplbmFibGVNb3VzZUV2ZW50cygpCkBAIC0xMzEsMjgg
KzE1NCwyMyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaXNhYmxlTW91c2VFdmVudHMo
KQogICAgIHEtPnNldEFjY2VwdEhvdmVyRXZlbnRzKGZhbHNlKTsKIH0KIAotdm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZURlc2t0b3AoUVF1aWNrV2ViVmlldyogdmlld3BvcnQp
Cit2b2lkIFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlOjppbml0aWFsaXplKFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci0gICAgaWYgKGlu
dGVyYWN0aW9uRW5naW5lKSB7Ci0gICAgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoaW50ZXJhY3Rp
b25FbmdpbmUuZGF0YSgpLCBTSUdOQUwoY29udGVudFN1c3BlbmRSZXF1ZXN0ZWQoKSksIHZpZXdw
b3J0LCBTTE9UKF9xX3N1c3BlbmQoKSkpOwotICAgICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGlu
dGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKGNvbnRlbnRSZXN1bWVSZXF1ZXN0ZWQoKSks
IHZpZXdwb3J0LCBTTE9UKF9xX3Jlc3VtZSgpKSk7Ci0gICAgICAgIFFPYmplY3Q6OmRpc2Nvbm5l
Y3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwodmlld3BvcnRUcmFqZWN0b3J5VmVj
dG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJikpLCB2aWV3cG9ydCwgU0xPVChfcV92aWV3cG9ydFRy
YWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2ludEYmKSkpOwotICAgIH0KLSAgICBpbnRl
cmFjdGlvbkVuZ2luZS5yZXNldCgwKTsKLSAgICBwYWdlVmlldy0+ZC0+ZXZlbnRIYW5kbGVyLT5z
ZXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKDApOworICAgIFFRdWlja1dlYlZpZXdQcml2YXRl
Ojppbml0aWFsaXplKGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZik7CiAgICAgZW5hYmxlTW91c2VF
dmVudHMoKTsKLSAgICB1cGRhdGVEZXNrdG9wVmlld3BvcnRTaXplKCk7CisKKyAgICAvLyBUcmln
Z2VyIHNldHRpbmcgb2YgY29ycmVjdCB2aXNpYmlsaXR5IGZsYWdzIGFmdGVyIGV2ZXJ5dGhpbmcg
d2FzIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQuCisgICAgX3Ffb25WaXNpYmxlQ2hhbmdlZCgp
OwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXplVG91Y2goUVF1aWNr
V2ViVmlldyogdmlld3BvcnQpCit2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpp
bml0aWFsaXplKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYpCiB7Ci0gICAgaW50ZXJhY3Rpb25FbmdpbmUucmVzZXQobmV3IFF0Vmlld3BvcnRJbnRl
cmFjdGlvbkVuZ2luZSh2aWV3cG9ydCwgcGFnZVZpZXcuZGF0YSgpKSk7Ci0gICAgcGFnZVZpZXct
PmQtPmV2ZW50SGFuZGxlci0+c2V0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZShpbnRlcmFjdGlv
bkVuZ2luZS5kYXRhKCkpOwotICAgIGRpc2FibGVNb3VzZUV2ZW50cygpOwotICAgIFFPYmplY3Q6
OmNvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwoY29udGVudFN1c3BlbmRS
ZXF1ZXN0ZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX3N1c3BlbmQoKSkpOwotICAgIFFPYmplY3Q6
OmNvbm5lY3QoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpLCBTSUdOQUwoY29udGVudFJlc3VtZVJl
cXVlc3RlZCgpKSwgdmlld3BvcnQsIFNMT1QoX3FfcmVzdW1lKCkpKTsKLSAgICBRT2JqZWN0Ojpj
b25uZWN0KGludGVyYWN0aW9uRW5naW5lLmRhdGEoKSwgU0lHTkFMKHZpZXdwb3J0VHJhamVjdG9y
eVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpKSwgdmlld3BvcnQsIFNMT1QoX3Ffdmlld3Bv
cnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJikpKTsKLSAgICB1cGRhdGVU
b3VjaFZpZXdwb3J0U2l6ZSgpOworICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjppbml0aWFsaXpl
KGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZik7CisgICAgd2ViUGFnZVByb3h5LT5zZXRVc2VGaXhl
ZExheW91dCh0cnVlKTsKKyAgICBwYWdlVmlldy0+ZXZlbnRIYW5kbGVyKCktPnNldFZpZXdwb3J0
SW50ZXJhY3Rpb25FbmdpbmUoaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpKTsKKworICAgIC8vIFRy
aWdnZXIgc2V0dGluZyBvZiBjb3JyZWN0IHZpc2liaWxpdHkgZmxhZ3MgYWZ0ZXIgZXZlcnl0aGlu
ZyB3YXMgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZC4KKyAgICBfcV9vblZpc2libGVDaGFuZ2Vk
KCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldE5lZWRzRGlzcGxheSgpCkBA
IC0xNjksMjIgKzE4NywxNiBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpzZXROZWVkc0Rp
c3BsYXkoKQogICAgIHEtPnBhZ2UoKS0+dXBkYXRlKCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OmxvYWREaWRDb21taXQoKQordm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJp
dmF0ZTo6bG9hZERpZENvbW1pdCgpCiB7CiAgICAgLy8gRHVlIHRvIGVudGVyaW5nIHByb3Zpc2lv
bmFsIGxvYWQgYmVmb3JlIGNvbW1pdHRpbmcsIHdlCiAgICAgLy8gbWlnaHQgYWN0dWFsbHkgYmUg
c3VzcGVuZGVkIGhlcmUuCiAKLSAgICBpZiAocGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0
b3BCZWhhdmlvdXIoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaXNUcmFuc2l0aW9uaW5nVG9O
ZXdQYWdlID0gdHJ1ZTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluaXNo
Rmlyc3ROb25FbXB0eUxheW91dCgpCit2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRl
OjpkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5b3V0KCkKIHsKLSAgICBpZiAocGFnZVZpZXctPnVz
ZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
aWYgKCFwYWdlSXNTdXNwZW5kZWQpIHsKICAgICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdl
ID0gZmFsc2U7CiAgICAgICAgIHBvc3RUcmFuc2l0aW9uU3RhdGUtPmFwcGx5KCk7CkBAIC0yMDAs
MTIgKzIxMiwxMiBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9vbkljb25DaGFuZ2Vk
Rm9yUGFnZVVSTChjb25zdCBRVXJsJiBwYWdlVVJMLCBjb25zdAogICAgIHNldEljb24oaWNvblVS
TCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3N1c3BlbmQoKQordm9pZCBR
UXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3Ffc3VzcGVuZCgpCiB7CiAgICAgcGFnZUlz
U3VzcGVuZGVkID0gdHJ1ZTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVz
dW1lKCkKK3ZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3Jlc3VtZSgpCiB7
CiAgICAgcGFnZUlzU3VzcGVuZGVkID0gZmFsc2U7CiAKQEAgLTIxNywxMiArMjI5LDkgQEAgdm9p
ZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKCkKICAgICB1cGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RBbmRTY2FsZSgpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUpCit2b2lkIFFRdWlja1dlYlZp
ZXdGbGlja2FibGVQcml2YXRlOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5l
d1NpemUpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwotICAgIGlmIChwYWdlVmlldy0+dXNl
c1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpKQotICAgICAgICByZXR1cm47Ci0KICAgICAv
LyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBoYW5kbGUgc3VzcGVuZCBoZXJlIGFzIHdlbGwK
ICAgICBpZiAoaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlKSB7CiAgICAgICAgIHBvc3RUcmFuc2l0
aW9uU3RhdGUtPmNvbnRlbnRzU2l6ZSA9IG5ld1NpemU7CkBAIC0yMzAsMTQgKzIzOSwxMSBAQCB2
b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNp
emUmIG5ld1NpemUpCiAgICAgfQogCiAgICAgcGFnZVZpZXctPnNldENvbnRlbnRzU2l6ZShuZXdT
aXplKTsKLSAgICBxLT5tX2V4cGVyaW1lbnRhbC0+dmlld3BvcnRJbmZvKCktPmRpZFVwZGF0ZUNv
bnRlbnRzU2l6ZSgpOworICAgIHEtPmV4cGVyaW1lbnRhbCgpLT52aWV3cG9ydEluZm8oKS0+ZGlk
VXBkYXRlQ29udGVudHNTaXplKCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cyYgYXJncykKK3ZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYgYXJncykK
IHsKLSAgICBpZiAocGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgdmlld3BvcnRBcmd1bWVudHMgPSBhcmdzOwogCiAgICAg
aWYgKGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSkKQEAgLTI1MSwxMSArMjU3LDggQEAgdm9pZCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCkKICAgICBuYXZp
Z2F0aW9uSGlzdG9yeS0+ZC0+cmVzZXQoKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpCit2b2lkIFFRdWlja1dl
YlZpZXdGbGlja2FibGVQcml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQm
IHBvcykKIHsKLSAgICBpZiAocGFnZVZpZXctPnVzZXNUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlv
dXIoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFn
ZSkgewogICAgICAgICBwb3N0VHJhbnNpdGlvblN0YXRlLT5wb3NpdGlvbiA9IHBvczsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY3LDcgKzI3MCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKQogdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICBlbWl0IHFfcHRyLT5uYXZpZ2F0
aW9uU3RhdGVDaGFuZ2VkKCk7Ci0gICAgcGFnZVZpZXctPmQtPmV2ZW50SGFuZGxlci0+cmVzZXRH
ZXN0dXJlUmVjb2duaXplcnMoKTsKKyAgICBwYWdlVmlldy0+ZXZlbnRIYW5kbGVyKCktPnJlc2V0
R2VzdHVyZVJlY29nbml6ZXJzKCk7CiAgICAgV2ViQ29yZTo6S1VSTCB1cmwoV2ViQ29yZTo6UGFy
c2VkVVJMU3RyaW5nLCB3ZWJQYWdlUHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKSk7CiAgICAgcVdh
cm5pbmcoIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICcl
cycuIiwgcVByaW50YWJsZShRVXJsKHVybCkudG9TdHJpbmcoUVVybDo6UmVtb3ZlVXNlckluZm8p
KSk7CiB9CkBAIC0yOTgsNyArMzAxLDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aGFu
ZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogICAgIGNvbnRleHQt
PmRvd25sb2FkTWFuYWdlcigpLT5hZGREb3dubG9hZChkb3dubG9hZCwgZG93bmxvYWRJdGVtKTsK
IH0KIAotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
QW5kU2NhbGUoKQordm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6dXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKQogewogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdp
bmdBcmVhID0gd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOwogICAgIGlmICghZHJhd2luZ0Fy
ZWEpCkBAIC0zMTMsNyArMzE2LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKQogCiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3Vw
cG9ydCBzdXNwZW5kIGFuZCByZXN1bWUsIHRoaXMgc2hvdWxkIGJlIGRlbGF5ZWQgdW50aWwgdGhl
IHBhZ2UgaXMgYWN0aXZlIGlmIHRoZSBwYWdlIGlzIHN1c3BlbmRlZC4KICAgICB3ZWJQYWdlUHJv
eHktPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KGFsaWduZWRWaXNpYmxlQ29udGVudFJlY3Qp
OwotICAgIHEtPm1fZXhwZXJpbWVudGFsLT52aWV3cG9ydEluZm8oKS0+ZGlkVXBkYXRlQ3VycmVu
dFNjYWxlKCk7CisgICAgcS0+ZXhwZXJpbWVudGFsKCktPnZpZXdwb3J0SW5mbygpLT5kaWRVcGRh
dGVDdXJyZW50U2NhbGUoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffdmll
d3BvcnRUcmFqZWN0b3J5VmVjdG9yQ2hhbmdlZChjb25zdCBRUG9pbnRGJiB0cmFqZWN0b3J5VmVj
dG9yKQpAQCAtMzQwLDE5ICszNDMsMTggQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ff
b25SZWNlaXZlZFJlc3BvbnNlRnJvbURvd25sb2FkKFFXZWJEb3dubG9hZEl0ZW0qIGQKICAgICBl
bWl0IHEtPmV4cGVyaW1lbnRhbCgpLT5kb3dubG9hZFJlcXVlc3RlZChkb3dubG9hZEl0ZW0pOwog
fQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVEZXNrdG9wVmlld3BvcnRTaXpl
KCkKK3ZvaWQgUVF1aWNrV2ViVmlld0xlZ2FjeVByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgp
CiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIFFTaXplIHZpZXdwb3J0U2l6ZSA9IHEt
PmJvdW5kaW5nUmVjdCgpLnNpemUoKS50b1NpemUoKTsKLSAgICBwYWdlVmlldy0+c2V0V2lkdGgo
dmlld3BvcnRTaXplLndpZHRoKCkpOwotICAgIHBhZ2VWaWV3LT5zZXRIZWlnaHQodmlld3BvcnRT
aXplLmhlaWdodCgpKTsKKyAgICBwYWdlVmlldy0+c2V0Q29udGVudHNTaXplKHZpZXdwb3J0U2l6
ZSk7CiAgICAgLy8gVGhlIGZpeGVkIGxheW91dCBpcyBoYW5kbGVkIGJ5IHRoZSBGcmFtZVZpZXcg
YW5kIHRoZSBkcmF3aW5nIGFyZWEgZG9lc24ndCBiZWhhdmUgZGlmZmVyZW50bHkKLSAgICAvLyB3
ZXRoZXIgaXRzIGZpeGVkIG9yIG5vdC4gV2Ugc3RpbGwgbmVlZCB0byB0ZWxsIHRoZSBkcmF3aW5n
IGFyZWEgd2hpY2ggcGFydCBvZiBpdAorICAgIC8vIHdoZXRoZXIgaXRzIGZpeGVkIG9yIG5vdC4g
V2Ugc3RpbGwgbmVlZCB0byB0ZWxsIHRoZSBkcmF3aW5nIGFyZWEgd2hpY2ggcGFydCBvZiBpdAog
ICAgIC8vIGhhcyB0byBiZSByZW5kZXJlZCBvbiB0aWxlcywgYW5kIGluIGRlc2t0b3AgbW9kZSBp
dCdzIGFsbCBvZiBpdC4KICAgICB3ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFZpc2li
bGVDb250ZW50c1JlY3RBbmRTY2FsZShJbnRSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSks
IDEpOwogfQogCi12b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVUb3VjaFZpZXdwb3J0
U2l6ZSgpCit2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjp1cGRhdGVWaWV3cG9y
dFNpemUoKQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKICAgICBRU2l6ZSB2aWV3cG9ydFNp
emUgPSBxLT5ib3VuZGluZ1JlY3QoKS5zaXplKCkudG9TaXplKCk7CkBAIC0zNjgsNyArMzcwLDcg
QEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVG91Y2hWaWV3cG9ydFNpemUoKQog
ICAgIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdEFuZFNjYWxlKCk7CiB9CiAKLXZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OlBvc3RUcmFuc2l0aW9uU3RhdGU6OmFwcGx5KCkKK3ZvaWQgUVF1aWNr
V2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6OlBvc3RUcmFuc2l0aW9uU3RhdGU6OmFwcGx5KCkKIHsK
ICAgICBwLT5pbnRlcmFjdGlvbkVuZ2luZS0+cmVzZXQoKTsKICAgICBwLT5pbnRlcmFjdGlvbkVu
Z2luZS0+YXBwbHlDb25zdHJhaW50cyhwLT5jb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpKTsK
QEAgLTU2MywyMCArNTY1LDYgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffb25PcGVu
UGFuZWxGaW5pc2hlZChpbnQgcmVzdWx0KQogICAgIGZpbGVEaWFsb2cgPSAwOwogfQogCi12b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpzZXRVc2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIo
Ym9vbCBlbmFibGUpCi17Ci0gICAgUV9RKFFRdWlja1dlYlZpZXcpOwotCi0gICAgLy8gRG8gbm90
IGd1YXJkLCB0ZXN0aW5nIGZvciB0aGUgc2FtZSB2YWx1ZSwgYXMgd2UgY2FsbCB0aGlzIGZyb20g
dGhlIGNvbnN0cnVjdG9yLgotCi0gICAgd2ViUGFnZVByb3h5LT5zZXRVc2VGaXhlZExheW91dCgh
ZW5hYmxlKTsKLSAgICBwYWdlVmlldy0+c2V0VXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91
cihlbmFibGUpOwotICAgIGlmIChlbmFibGUpCi0gICAgICAgIGluaXRpYWxpemVEZXNrdG9wKHEp
OwotICAgIGVsc2UKLSAgICAgICAgaW5pdGlhbGl6ZVRvdWNoKHEpOwotfQotCiB2b2lkIFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpzZXRWaWV3SW5BdHRhY2hlZFByb3BlcnRpZXMoUU9iamVjdCogb2Jq
ZWN0KQogewogICAgIFFfUShRUXVpY2tXZWJWaWV3KTsKQEAgLTY3MiwxNiArNjYwLDYgQEAgUVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6flFRdWlja1dlYlZpZXdFeHBlcmltZW50YWwoKQogewog
fQogCi12b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnNldFVzZVRyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cihib29sIGVuYWJsZSkKLXsKLSAgICBRX0QoUVF1aWNrV2ViVmlldyk7Ci0K
LSAgICBpZiAoZW5hYmxlID09IGQtPnBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVo
YXZpb3VyKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGQtPnNldFVzZVRyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cihlbmFibGUpOwotfQotCiB2b2lkIFFRdWlja1dlYlZpZXdFeHBlcmltZW50
YWw6OnNldFJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKGJvb2wgZW5hYmxlKQogewogICAgIFFfRChR
UXVpY2tXZWJWaWV3KTsKQEAgLTY5NCw2ICs2NzIsMTYgQEAgYm9vbCBRUXVpY2tXZWJWaWV3RXhw
ZXJpbWVudGFsOjpyZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGQt
PnJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKCk7CiB9CiAKK3ZvaWQgUVF1aWNrV2ViVmlld0V4cGVy
aW1lbnRhbDo6c2V0RmxpY2thYmxlVmlld3BvcnRFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAg
IHNfZmxpY2thYmxlVmlld3BvcnRFbmFibGVkID0gZW5hYmxlOworfQorCitib29sIFFRdWlja1dl
YlZpZXdFeHBlcmltZW50YWw6OmZsaWNrYWJsZVZpZXdwb3J0RW5hYmxlZCgpCit7CisgICAgcmV0
dXJuIHNfZmxpY2thYmxlVmlld3BvcnRFbmFibGVkOworfQorCiB2b2lkIFFRdWlja1dlYlZpZXdF
eHBlcmltZW50YWw6OnBvc3RNZXNzYWdlKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
UV9EKFFRdWlja1dlYlZpZXcpOwpAQCAtODAzLDEyICs3OTEsNiBAQCB2b2lkIFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWw6OnNldEl0ZW1TZWxlY3RvcihRRGVjbGFyYXRpdmVDb21wb25lbnQqIGl0
ZW1TZWxlYwogICAgIGVtaXQgaXRlbVNlbGVjdG9yQ2hhbmdlZCgpOwogfQogCi1ib29sIFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6OnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpIGNv
bnN0Ci17Ci0gICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwotICAgIHJldHVybiBkLT5wYWdl
Vmlldy0+dXNlc1RyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cigpOwotfQotCiBRUXVpY2tVcmxT
Y2hlbWVEZWxlZ2F0ZSogUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2NoZW1lRGVsZWdhdGVz
X0F0KFFEZWNsYXJhdGl2ZUxpc3RQcm9wZXJ0eTxRUXVpY2tVcmxTY2hlbWVEZWxlZ2F0ZT4qIHBy
b3BlcnR5LCBpbnQgaW5kZXgpCiB7CiAgICAgY29uc3QgUU9iamVjdExpc3QgY2hpbGRyZW4gPSBw
cm9wZXJ0eS0+b2JqZWN0LT5jaGlsZHJlbigpOwpAQCAtODk2LDcgKzg3OCw3IEBAIFFRdWlja1dl
YlBhZ2UqIFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6OnBhZ2UoKQogCiBRUXVpY2tXZWJWaWV3
OjpRUXVpY2tXZWJWaWV3KFFRdWlja0l0ZW0qIHBhcmVudCkKICAgICA6IFFRdWlja0l0ZW0ocGFy
ZW50KQotICAgICwgZF9wdHIobmV3IFFRdWlja1dlYlZpZXdQcml2YXRlKHRoaXMpKQorICAgICwg
ZF9wdHIoY3JlYXRlUHJpdmF0ZU9iamVjdCh0aGlzKSkKICAgICAsIG1fZXhwZXJpbWVudGFsKG5l
dyBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKHRoaXMpKQogewogICAgIFFfRChRUXVpY2tXZWJW
aWV3KTsKQEAgLTkwNSw3ICs4ODcsNyBAQCBRUXVpY2tXZWJWaWV3OjpRUXVpY2tXZWJWaWV3KFFR
dWlja0l0ZW0qIHBhcmVudCkKIAogUVF1aWNrV2ViVmlldzo6UVF1aWNrV2ViVmlldyhXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBRUXVpY2tJdGVt
KiBwYXJlbnQpCiAgICAgOiBRUXVpY2tJdGVtKHBhcmVudCkKLSAgICAsIGRfcHRyKG5ldyBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZSh0aGlzKSkKKyAgICAsIGRfcHRyKGNyZWF0ZVByaXZhdGVPYmplY3Qo
dGhpcykpCiAgICAgLCBtX2V4cGVyaW1lbnRhbChuZXcgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRh
bCh0aGlzKSkKIHsKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7CkBAIC0xMDgxLDEyICsxMDYzLDgg
QEAgdm9pZCBRUXVpY2tXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdH
ZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGQKIHsKICAgICBRX0QoUVF1aWNrV2ViVmlldyk7CiAg
ICAgUVF1aWNrSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7
Ci0gICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkpIHsKLSAg
ICAgICAgaWYgKGQtPnBhZ2VWaWV3LT51c2VzVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKCkp
Ci0gICAgICAgICAgICBkLT51cGRhdGVEZXNrdG9wVmlld3BvcnRTaXplKCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGQtPnVwZGF0ZVRvdWNoVmlld3BvcnRTaXplKCk7Ci0gICAgfQorICAg
IGlmIChuZXdHZW9tZXRyeS5zaXplKCkgIT0gb2xkR2VvbWV0cnkuc2l6ZSgpKQorICAgICAgICBk
LT51cGRhdGVWaWV3cG9ydFNpemUoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3OjprZXlQcmVz
c0V2ZW50KFFLZXlFdmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAppbmRleCBjYWMzOGM3ZGU3MmRkMTgxMTJhOWE0YjQz
ZDBiM2E5NGRhM2Y4NWFjLi4yNmQyOTJhZmM2YTNkZGU5ZTRlZDAwOTgyNDBlNTY5OTY0YTU3Yzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
d19wLmgKQEAgLTIxMiw3ICsyMTIsNiBAQCBjbGFzcyBRV0VCS0lUX0VYUE9SVCBRUXVpY2tXZWJW
aWV3RXhwZXJpbWVudGFsIDogcHVibGljIFFPYmplY3QgewogICAgIFFfUFJPUEVSVFkoUURlY2xh
cmF0aXZlQ29tcG9uZW50KiBjZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvbkRpYWxvZyBSRUFEIGNlcnRp
ZmljYXRlVmVyaWZpY2F0aW9uRGlhbG9nIFdSSVRFIHNldENlcnRpZmljYXRlVmVyaWZpY2F0aW9u
RGlhbG9nIE5PVElGWSBjZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvbkRpYWxvZ0NoYW5nZWQpCiAgICAg
UV9QUk9QRVJUWShRRGVjbGFyYXRpdmVDb21wb25lbnQqIGl0ZW1TZWxlY3RvciBSRUFEIGl0ZW1T
ZWxlY3RvciBXUklURSBzZXRJdGVtU2VsZWN0b3IgTk9USUZZIGl0ZW1TZWxlY3RvckNoYW5nZWQp
CiAgICAgUV9QUk9QRVJUWShRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzIFJFQUQgcHJlZmVy
ZW5jZXMgQ09OU1RBTlQgRklOQUwpCi0gICAgUV9QUk9QRVJUWShib29sIHVzZVRyYWRpdGlvbmFs
RGVza3RvcEJlaGF2aW91ciBSRUFEIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91ciBXUklU
RSBzZXRVc2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIpCiAgICAgUV9QUk9QRVJUWShRV2Vi
Vmlld3BvcnRJbmZvKiB2aWV3cG9ydEluZm8gUkVBRCB2aWV3cG9ydEluZm8gQ09OU1RBTlQgRklO
QUwpCiAgICAgUV9QUk9QRVJUWShRRGVjbGFyYXRpdmVMaXN0UHJvcGVydHk8UVF1aWNrVXJsU2No
ZW1lRGVsZWdhdGU+IHVybFNjaGVtZURlbGVnYXRlcyBSRUFEIHNjaGVtZURlbGVnYXRlcykKICAg
ICBRX0VOVU1TKE5hdmlnYXRpb25SZXF1ZXN0QWN0aW9uKQpAQCAtMjM3LDggKzIzNiw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENlcnRpZmljYXRlVmVyaWZpY2F0aW9uRGlhbG9nKFFEZWNsYXJh
dGl2ZUNvbXBvbmVudCopOwogICAgIFFEZWNsYXJhdGl2ZUNvbXBvbmVudCogaXRlbVNlbGVjdG9y
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJdGVtU2VsZWN0b3IoUURlY2xhcmF0aXZlQ29tcG9uZW50
Kik7Ci0gICAgYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIoKSBjb25zdDsKLSAg
ICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7CiAK
ICAgICBRV2ViVmlld3BvcnRJbmZvKiB2aWV3cG9ydEluZm8oKTsKIApAQCAtMjU3LDYgKzI1NCw4
IEBAIHB1YmxpYzoKICAgICAvLyBDKysgb25seQogICAgIGJvb2wgcmVuZGVyVG9PZmZzY3JlZW5C
dWZmZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFJlbmRlclRvT2Zmc2NyZWVuQnVmZmVyKGJvb2wg
ZW5hYmxlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRGbGlja2FibGVWaWV3cG9ydEVuYWJsZWQoYm9v
bCBlbmFibGUpOworICAgIHN0YXRpYyBib29sIGZsaWNrYWJsZVZpZXdwb3J0RW5hYmxlZCgpOwog
CiBwdWJsaWMgUV9TTE9UUzoKICAgICB2b2lkIGdvQmFja1RvKGludCBpbmRleCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmgKaW5k
ZXggOWYyODE3MDFhNWRjN2I4Y2EyNjRmY2YzY2ZlZjVmOTkyZjkxOWIxMS4uN2U1ZGU3ZmE5NGU1
MDRhNDI2NmJhOGE3NmY0YTdjYmUwYjI1ZmVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wX3AuaApAQCAtNjEsMzIgKzYxLDI3IEBA
IGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUVF1aWNr
V2ViVmlld1ByaXZhdGUqIGdldChRUXVpY2tXZWJWaWV3KiBxKSB7IHJldHVybiBxLT5kX3B0ci5k
YXRhKCk7IH0KIAotICAgIFFRdWlja1dlYlZpZXdQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdw
b3J0KTsKICAgICB2aXJ0dWFsIH5RUXVpY2tXZWJWaWV3UHJpdmF0ZSgpOwogCi0gICAgdm9pZCBp
bml0aWFsaXplKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgcGFn
ZUdyb3VwUmVmID0gMCk7CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYgPSAwLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYgPSAwKTsKIAotICAg
IHZvaWQgaW5pdGlhbGl6ZVRvdWNoKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KTsKLSAgICB2b2lk
IGluaXRpYWxpemVEZXNrdG9wKFFRdWlja1dlYlZpZXcqIHZpZXdwb3J0KTsKICAgICB2b2lkIGVu
YWJsZU1vdXNlRXZlbnRzKCk7CiAgICAgdm9pZCBkaXNhYmxlTW91c2VFdmVudHMoKTsKIAotICAg
IHZvaWQgbG9hZERpZENvbW1pdCgpOwotCi0gICAgdm9pZCBkaWRGaW5pc2hGaXJzdE5vbkVtcHR5
TGF5b3V0KCk7Ci0gICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
Q29tbWl0KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEZpcnN0Tm9uRW1wdHlMYXlv
dXQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmdzKSB7IH0KICAgICB2b2lkIGRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdCgpOwogCiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAot
ICAgIHZvaWQgdXBkYXRlRGVza3RvcFZpZXdwb3J0U2l6ZSgpOworICAgIHZpcnR1YWwgUXRWaWV3
cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9ydEludGVyYWN0aW9uRW5naW5lKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKSB7IH0KICAgICB2
b2lkIHVwZGF0ZVRvdWNoVmlld3BvcnRTaXplKCk7CiAgICAgUXRWaWV3cG9ydEludGVyYWN0aW9u
RW5naW5lOjpDb25zdHJhaW50cyBjb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpOwogCi0gICAg
dm9pZCB1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZSgpOwotCi0gICAgdm9pZCBfcV9z
dXNwZW5kKCk7Ci0gICAgdm9pZCBfcV9yZXN1bWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgX3Ffc3Vz
cGVuZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBfcV9yZXN1bWUoKSB7IH0KICAgICB2b2lkIF9x
X3ZpZXdwb3J0VHJhamVjdG9yeVZlY3RvckNoYW5nZWQoY29uc3QgUVBvaW50RiYpOwogICAgIHZv
aWQgX3Ffb25PcGVuUGFuZWxGaWxlc1NlbGVjdGVkKCk7CiAgICAgdm9pZCBfcV9vbk9wZW5QYW5l
bEZpbmlzaGVkKGludCByZXN1bHQpOwpAQCAtMTAyLDcgKzk3LDYgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgUVN0cmluZyYgaG9z
dG5hbWUsIGNvbnN0IFFTdHJpbmcmIHJlYWxtLCBjb25zdCBRU3RyaW5nJiBwcmVmaWxsZWRVc2Vy
bmFtZSwgUVN0cmluZyYgdXNlcm5hbWUsIFFTdHJpbmcmIHBhc3N3b3JkKTsKICAgICBib29sIGhh
bmRsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChjb25zdCBRU3RyaW5nJiBob3N0bmFt
ZSk7CiAKLSAgICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cihib29sIGVu
YWJsZSk7CiAgICAgdm9pZCBzZXRSZW5kZXJUb09mZnNjcmVlbkJ1ZmZlcihib29sIGVuYWJsZSkg
eyBtX3JlbmRlclRvT2Zmc2NyZWVuQnVmZmVyID0gZW5hYmxlOyB9CiAgICAgdm9pZCBzZXRWaWV3
SW5BdHRhY2hlZFByb3BlcnRpZXMoUU9iamVjdCopOwogICAgIHZvaWQgc2V0SWNvbihjb25zdCBR
VXJsJik7CkBAIC0xMTQsMzAgKzEwOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gUGFnZUNsaWVudC4K
ICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgY29uc3Q7CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwot
ICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpOwotICAgIHZv
aWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBuZXdTaXplKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUp
IHsgfQogICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CiAgICAgdm9pZCBkaWRSZWxhdW5jaFBy
b2Nlc3MoKTsKICAgICBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdB
cmVhUHJveHkoKTsKICAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5
Kik7CiAKLXByaXZhdGU6Ci0gICAgLy8gVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgY29s
bGVjdGluZyBhbmQgYXBwbHlpbmcgYWxsIHByb3BlcnRpZXMKLSAgICAvLyBvbiB0aGUgdmlld3Bv
cnQgaXRlbSwgd2hlbiB0cmFuc2l0aW9uaW5nIGZyb20gcGFnZSBBIHRvIHBhZ2UgQiBpcyBmaW5p
c2hlZC4KLSAgICAvLyBTZWUgbW9yZSBhdCBodHRwczovL3RyYWMud2Via2l0Lm9yZy93aWtpL1F0
V2ViS2l0TGF5b3V0SW50ZXJhY3Rpb24KLSAgICBjbGFzcyBQb3N0VHJhbnNpdGlvblN0YXRlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RUcmFuc2l0aW9uU3RhdGUoUVF1aWNrV2ViVmlld1By
aXZhdGUqIHBhcmVudCkKLSAgICAgICAgICAgIDogcChwYXJlbnQpCi0gICAgICAgIHsgfQotCi0g
ICAgICAgIHZvaWQgYXBwbHkoKTsKLQotICAgICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZSogcDsK
LSAgICAgICAgUVNpemUgY29udGVudHNTaXplOwotICAgICAgICBRUG9pbnQgcG9zaXRpb247Ci0g
ICAgfTsKLQorcHJvdGVjdGVkOgorICAgIFFRdWlja1dlYlZpZXdQcml2YXRlKFFRdWlja1dlYlZp
ZXcqIHZpZXdwb3J0KTsKICAgICBSZWZQdHI8UXRXZWJDb250ZXh0PiBjb250ZXh0OwogICAgIFJl
ZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gd2ViUGFnZVByb3h5OwogCkBAIC0xNTEsOCArMTMw
LDYgQEAgcHJpdmF0ZToKICAgICBRU2NvcGVkUG9pbnRlcjxRdFdlYlBhZ2VVSUNsaWVudD4gcGFn
ZVVJQ2xpZW50OwogCiAgICAgUVNjb3BlZFBvaW50ZXI8UVF1aWNrV2ViUGFnZT4gcGFnZVZpZXc7
Ci0gICAgUVNjb3BlZFBvaW50ZXI8UXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lPiBpbnRlcmFj
dGlvbkVuZ2luZTsKLQogICAgIFFRdWlja1dlYlZpZXcqIHFfcHRyOwogCiAgICAgUURlY2xhcmF0
aXZlQ29tcG9uZW50KiBhbGVydERpYWxvZzsKQEAgLTE2MywxNSArMTQwLDY0IEBAIHByaXZhdGU6
CiAgICAgUURlY2xhcmF0aXZlQ29tcG9uZW50KiBpdGVtU2VsZWN0b3I7CiAKICAgICBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50czsKLSAgICBPd25QdHI8UG9zdFRy
YW5zaXRpb25TdGF0ZT4gcG9zdFRyYW5zaXRpb25TdGF0ZTsKICAgICBRRmlsZURpYWxvZyogZmls
ZURpYWxvZzsKICAgICBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyUmVmIG9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyOwogCi0gICAgYm9vbCBpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2U7Ci0gICAgYm9v
bCBwYWdlSXNTdXNwZW5kZWQ7CiAgICAgYm9vbCBtX25hdmlnYXRvclF0T2JqZWN0RW5hYmxlZDsK
ICAgICBib29sIG1fcmVuZGVyVG9PZmZzY3JlZW5CdWZmZXI7CiAgICAgUVVybCBtX2ljb25VUkw7
CiB9OwogCitjbGFzcyBRUXVpY2tXZWJWaWV3TGVnYWN5UHJpdmF0ZSA6IHB1YmxpYyBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZSB7CisgICAgUV9ERUNMQVJFX1BVQkxJQyhRUXVpY2tXZWJWaWV3KQorcHVi
bGljOgorICAgIFFRdWlja1dlYlZpZXdMZWdhY3lQcml2YXRlKFFRdWlja1dlYlZpZXcqIHZpZXdw
b3J0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiA9IDAsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApOworCisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZSgpOworfTsKKworY2xhc3MgUVF1aWNrV2ViVmlld0ZsaWNr
YWJsZVByaXZhdGUgOiBwdWJsaWMgUVF1aWNrV2ViVmlld1ByaXZhdGUgeworICAgIFFfREVDTEFS
RV9QVUJMSUMoUVF1aWNrV2ViVmlldykKK3B1YmxpYzoKKyAgICBRUXVpY2tXZWJWaWV3RmxpY2th
YmxlUHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCk7CisgICAgdmlydHVhbCB+UVF1aWNr
V2ViVmlld0ZsaWNrYWJsZVByaXZhdGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShX
S0NvbnRleHRSZWYgY29udGV4dFJlZiA9IDAsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9
IDApOworCisgICAgdmlydHVhbCB2b2lkIGxvYWREaWRDb21taXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoRmlyc3ROb25FbXB0eUxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMm
IGFyZ3MpOworICAgIHZpcnR1YWwgUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lKiB2aWV3cG9y
dEludGVyYWN0aW9uRW5naW5lKCkgeyByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUuZGF0YSgpOyB9
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZSgpOworICAgIHZpcnR1YWwgdm9p
ZCBfcV9zdXNwZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIF9xX3Jlc3VtZSgpOworCisgICAgdmly
dHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFFTaXplJiBuZXdTaXplKTsK
KworICAgIHZvaWQgdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUoKTsKKworcHJpdmF0
ZToKKyAgICAvLyBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjb2xsZWN0aW5nIGFuZCBh
cHBseWluZyBhbGwgcHJvcGVydGllcworICAgIC8vIG9uIHRoZSB2aWV3cG9ydCBpdGVtLCB3aGVu
IHRyYW5zaXRpb25pbmcgZnJvbSBwYWdlIEEgdG8gcGFnZSBCIGlzIGZpbmlzaGVkLgorICAgIC8v
IFNlZSBtb3JlIGF0IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL3dpa2kvUXRXZWJLaXRMYXlvdXRJ
bnRlcmFjdGlvbgorICAgIGNsYXNzIFBvc3RUcmFuc2l0aW9uU3RhdGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgUG9zdFRyYW5zaXRpb25TdGF0ZShRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0
ZSogcGFyZW50KQorICAgICAgICAgICAgOiBwKHBhcmVudCkKKyAgICAgICAgeyB9CisKKyAgICAg
ICAgdm9pZCBhcHBseSgpOworCisgICAgICAgIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRl
KiBwOworICAgICAgICBRU2l6ZSBjb250ZW50c1NpemU7CisgICAgICAgIFFQb2ludCBwb3NpdGlv
bjsKKyAgICB9OworCisgICAgUVNjb3BlZFBvaW50ZXI8UXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lPiBpbnRlcmFjdGlvbkVuZ2luZTsKKyAgICBPd25QdHI8UG9zdFRyYW5zaXRpb25TdGF0ZT4g
cG9zdFRyYW5zaXRpb25TdGF0ZTsKKyAgICBib29sIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZTsK
KyAgICBib29sIHBhZ2VJc1N1c3BlbmRlZDsKK307CisKICNlbmRpZiAvLyBxcXVpY2t3ZWJ2aWV3
X3BfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2
aWV3cG9ydGluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vidmll
d3BvcnRpbmZvLmNwcAppbmRleCAwYWUyYjFkYmU0OTViNmY3NTI0NDZjNzgyNzVmM2YyZTY1ZWUw
NzNjLi4xNDhiNTAwOTM3ZGQ0ODc0OTdmMDliMTM4MGJkOWU3MDM5MzMyOTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJ2aWV3cG9ydGluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYnZpZXdwb3J0aW5mby5jcHAK
QEAgLTQzLDU4ICs0Myw1OCBAQCBRU2l6ZSBRV2ViVmlld3BvcnRJbmZvOjpjb250ZW50c1NpemUo
KSBjb25zdAogCiBRVmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjpjdXJyZW50U2NhbGUoKSBjb25z
dAogewotICAgIGlmICghbV93ZWJWaWV3UHJpdmF0ZS0+aW50ZXJhY3Rpb25FbmdpbmUpCi0gICAg
ICAgIHJldHVybiBRVmFyaWFudCgpOworICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rpb25Fbmdp
bmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJbnRlcmFj
dGlvbkVuZ2luZSgpKQorICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPmN1cnJlbnRD
U1NTY2FsZSgpOwogCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5n
aW5lLT5jdXJyZW50Q1NTU2NhbGUoKTsKKyAgICByZXR1cm4gUVZhcmlhbnQoKTsKIH0KIAogUVZh
cmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6ZGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX3dlYlZpZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZSkKLSAgICAgICAgcmV0dXJu
IFFWYXJpYW50KCk7CisgICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSogaW50ZXJh
Y3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVyYWN0aW9uRW5naW5l
KCkpCisgICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5kZXZp
Y2VQaXhlbFJhdGlvOwogCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9u
RW5naW5lLT5jb25zdHJhaW50cygpLmRldmljZVBpeGVsUmF0aW87CisgICAgcmV0dXJuIFFWYXJp
YW50KCk7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmluaXRpYWxTY2FsZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3dlYlZpZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZSkKLSAg
ICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgICAgaWYgKFF0Vmlld3BvcnRJbnRlcmFjdGlvbkVu
Z2luZSogaW50ZXJhY3Rpb25FbmdpbmUgPSBtX3dlYlZpZXdQcml2YXRlLT52aWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKCkpCisgICAgICAgIHJldHVybiBpbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3Ry
YWludHMoKS5pbml0aWFsU2NhbGU7CiAKLSAgICByZXR1cm4gbV93ZWJWaWV3UHJpdmF0ZS0+aW50
ZXJhY3Rpb25FbmdpbmUtPmNvbnN0cmFpbnRzKCkuaW5pdGlhbFNjYWxlOworICAgIHJldHVybiBR
VmFyaWFudCgpOwogfQogCiBRVmFyaWFudCBRV2ViVmlld3BvcnRJbmZvOjptaW5pbXVtU2NhbGUo
KSBjb25zdAogewotICAgIGlmICghbV93ZWJWaWV3UHJpdmF0ZS0+aW50ZXJhY3Rpb25FbmdpbmUp
Ci0gICAgICAgIHJldHVybiBRVmFyaWFudCgpOworICAgIGlmIChRdFZpZXdwb3J0SW50ZXJhY3Rp
b25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmlld3BvcnRJ
bnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25FbmdpbmUtPmNv
bnN0cmFpbnRzKCkubWluaW11bVNjYWxlOwogCi0gICAgcmV0dXJuIG1fd2ViVmlld1ByaXZhdGUt
PmludGVyYWN0aW9uRW5naW5lLT5jb25zdHJhaW50cygpLm1pbmltdW1TY2FsZTsKKyAgICByZXR1
cm4gUVZhcmlhbnQoKTsKIH0KIAogUVZhcmlhbnQgUVdlYlZpZXdwb3J0SW5mbzo6bWF4aW11bVNj
YWxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fd2ViVmlld1ByaXZhdGUtPmludGVyYWN0aW9uRW5n
aW5lKQotICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyAgICBpZiAoUXRWaWV3cG9ydEludGVy
YWN0aW9uRW5naW5lKiBpbnRlcmFjdGlvbkVuZ2luZSA9IG1fd2ViVmlld1ByaXZhdGUtPnZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUoKSkKKyAgICAgICAgcmV0dXJuIGludGVyYWN0aW9uRW5naW5l
LT5jb25zdHJhaW50cygpLm1heGltdW1TY2FsZTsKIAotICAgIHJldHVybiBtX3dlYlZpZXdQcml2
YXRlLT5pbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5tYXhpbXVtU2NhbGU7CisgICAg
cmV0dXJuIFFWYXJpYW50KCk7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86OmlzU2Nh
bGFibGUoKSBjb25zdAogewotICAgIGlmICghbV93ZWJWaWV3UHJpdmF0ZS0+aW50ZXJhY3Rpb25F
bmdpbmUpCi0gICAgICAgIHJldHVybiBRVmFyaWFudCgpOworICAgIGlmIChRdFZpZXdwb3J0SW50
ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0ZS0+dmll
d3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAgICByZXR1cm4gaW50ZXJhY3Rpb25Fbmdp
bmUtPmNvbnN0cmFpbnRzKCkuaXNVc2VyU2NhbGFibGU7CiAKLSAgICByZXR1cm4gbV93ZWJWaWV3
UHJpdmF0ZS0+aW50ZXJhY3Rpb25FbmdpbmUtPmNvbnN0cmFpbnRzKCkuaXNVc2VyU2NhbGFibGU7
CisgICAgcmV0dXJuIFFWYXJpYW50KCk7CiB9CiAKIFFWYXJpYW50IFFXZWJWaWV3cG9ydEluZm86
OmxheW91dFNpemUoKSBjb25zdAogewotICAgIGlmICghbV93ZWJWaWV3UHJpdmF0ZS0+aW50ZXJh
Y3Rpb25FbmdpbmUpCi0gICAgICAgIHJldHVybiBRVmFyaWFudCgpOworICAgIGlmIChRdFZpZXdw
b3J0SW50ZXJhY3Rpb25FbmdpbmUqIGludGVyYWN0aW9uRW5naW5lID0gbV93ZWJWaWV3UHJpdmF0
ZS0+dmlld3BvcnRJbnRlcmFjdGlvbkVuZ2luZSgpKQorICAgICAgICByZXR1cm4gaW50ZXJhY3Rp
b25FbmdpbmUtPmNvbnN0cmFpbnRzKCkubGF5b3V0U2l6ZTsKIAotICAgIHJldHVybiBtX3dlYlZp
ZXdQcml2YXRlLT5pbnRlcmFjdGlvbkVuZ2luZS0+Y29uc3RyYWludHMoKS5sYXlvdXRTaXplOwor
ICAgIHJldHVybiBRVmFyaWFudCgpOwogfQogCiB2b2lkIFFXZWJWaWV3cG9ydEluZm86OmRpZFVw
ZGF0ZUNvbnRlbnRzU2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci9EZXNrdG9wV2ViVmlldy5xbWwg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BC
ZWhhdmlvci9EZXNrdG9wV2ViVmlldy5xbWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRkY2UwOTE4Yjk3ZTdiNWVlZDQwYmE1N2Q5ZjRhOGM1NjRlZmVjMDEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvRGVza3RvcFdlYlZpZXcucW1s
CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1pbXBvcnQgUXRRdWljayAyLjAKLWltcG9y
dCBRdFdlYktpdCAzLjAKLWltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMy4wCi0KLVdlYlZp
ZXcgewotICAgIGlkOiBjb21wb25lbnQKLSAgICBleHBlcmltZW50YWwudXNlVHJhZGl0aW9uYWxE
ZXNrdG9wQmVoYXZpb3VyOiB0cnVlCi19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVtU2Vs
ZWN0b3IucW1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0
cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2l0ZW1TZWxlY3Rvci5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM5NmY4
OGVmMGYyZGY3YWFkNjNkMGM0YTA4ZWE3MjY4YmRhYzVhZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2
aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sCkBAIC0wLDAgKzEsMTE3IEBACitpbXBvcnQgUXRRdWlj
ayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRX
ZWJLaXQuZXhwZXJpbWVudGFsIDMuMAorCisvLyBGSVhNRTogTW92ZWQgdG8gRGVza3RvcCB0ZXN0
cyBiZWNhdXNlIHdlIHdhbnQgdG8gaGF2ZSBtb3VzZUNsaWNrKCkgdG8gb3BlbiB0aGUgPHNlbGVj
dD4gdGFnLiBXZSBjYW4gbW92ZSBpdCBiYWNrCisvLyB3aGVuIFRlc3RDYXNlIHN0YXJ0cyBzdXBw
b3J0aW5nIHRvdWNoIGV2ZW50cywgc2VlIGh0dHBzOi8vYnVncmVwb3J0cy5xdC5ub2tpYS5jb20v
YnJvd3NlL1FUQlVHLTIzMDgzLgorV2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKworICAgIHdp
ZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDQwMAorCisgICAgcHJvcGVydHkgaW50IGluaXRpYWxTZWxl
Y3Rpb24KKyAgICBwcm9wZXJ0eSBpbnQgZmluYWxTZWxlY3Rpb24KKyAgICBwcm9wZXJ0eSBib29s
IHVzZUFjY2VwdERpcmVjdGx5CisgICAgcHJvcGVydHkgYm9vbCBzZWxlY3RvckxvYWRlZAorCisg
ICAgZXhwZXJpbWVudGFsLml0ZW1TZWxlY3RvcjogSXRlbSB7CisgICAgICAgIENvbXBvbmVudC5v
bkNvbXBsZXRlZDogeworICAgICAgICAgICAgaWYgKFdlYlZpZXcudmlldy5pbml0aWFsU2VsZWN0
aW9uICE9IC0xKQorICAgICAgICAgICAgICAgIG1vZGVsLml0ZW1zLnNlbGVjdChXZWJWaWV3LnZp
ZXcuaW5pdGlhbFNlbGVjdGlvbikKKworICAgICAgICAgICAgaWYgKFdlYlZpZXcudmlldy5maW5h
bFNlbGVjdGlvbiA9PSAtMSkKKyAgICAgICAgICAgICAgICBtb2RlbC5yZWplY3QoKQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHVzZUFjY2VwdERpcmVjdGx5KSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1vZGVsLmFjY2VwdChXZWJWaWV3LnZpZXcuZmluYWxTZWxlY3Rp
b24pCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwu
aXRlbXMuc2VsZWN0KFdlYlZpZXcudmlldy5maW5hbFNlbGVjdGlvbikKKyAgICAgICAgICAgICAg
ICAgICAgbW9kZWwuYWNjZXB0KCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIFdlYlZpZXcudmlldy5zZWxlY3RvckxvYWRlZCA9IHRydWUKKyAgICAgICAg
fQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiBsb2FkU3B5CisgICAgICAg
IHRhcmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKKyAg
ICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogdGl0bGVTcHkKKyAgICAgICAgdGFy
Z2V0OiB3ZWJWaWV3CisgICAgICAgIHNpZ25hbE5hbWU6ICJ0aXRsZUNoYW5nZWQiCisgICAgfQor
CisgICAgVGVzdENhc2UgeworICAgICAgICBpZDogdGVzdAorICAgICAgICBuYW1lOiAiV2ViVmll
d0l0ZW1TZWxlY3RvciIKKyAgICAgICAgd2hlbjogd2luZG93U2hvd24KKworICAgICAgICBmdW5j
dGlvbiBpbml0KCkgeworICAgICAgICAgICAgd2ViVmlldy5pbml0aWFsU2VsZWN0aW9uID0gLTEK
KyAgICAgICAgICAgIHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAtMQorICAgICAgICAgICAgd2Vi
Vmlldy51c2VBY2NlcHREaXJlY3RseSA9IGZhbHNlCisgICAgICAgICAgICB3ZWJWaWV3LnNlbGVj
dG9yTG9hZGVkID0gZmFsc2UKKyAgICAgICAgICAgIGxvYWRTcHkuY2xlYXIoKQorICAgICAgICAg
ICAgd2ViVmlldy5sb2FkKFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vc2VsZWN0Lmh0bWwiKSkK
KyAgICAgICAgICAgIGxvYWRTcHkud2FpdCgpCisgICAgICAgICAgICB0aXRsZVNweS5jbGVhcigp
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvcGVuSXRlbVNlbGVjdG9yKCkgeworICAg
ICAgICAgICAgbW91c2VDbGljayh3ZWJWaWV3LCAxNSwgMTUsIFF0LkxlZnRCdXR0b24pCisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FjY2VwdCgpIHsKKyAgICAgICAgICAgIHdl
YlZpZXcuZmluYWxTZWxlY3Rpb24gPSAxCisgICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9yKCkK
KyAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3
LnRpdGxlLCAiX19jbG9zZWRfXyIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0
X2FjY2VwdERpcmVjdGx5KCkgeworICAgICAgICAgICAgd2ViVmlldy5maW5hbFNlbGVjdGlvbiA9
IDEKKyAgICAgICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGlyZWN0bHkgPSB0cnVlCisgICAgICAg
ICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKKyAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAg
ICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19jbG9zZWRfXyIpCisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiB0ZXN0X3NlbGVjdEZpcnN0VGhlbkFjY2VwdCgpIHsKKyAgICAg
ICAgICAgIHdlYlZpZXcuaW5pdGlhbFNlbGVjdGlvbiA9IDEKKyAgICAgICAgICAgIHdlYlZpZXcu
ZmluYWxTZWxlY3Rpb24gPSAyCisgICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKKyAgICAg
ICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxl
LCAiX19hbGxfXyIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3NlbGVjdEZp
cnN0VGhlbkFjY2VwdERpcmVjdGx5KCkgeworICAgICAgICAgICAgd2ViVmlldy5pbml0aWFsU2Vs
ZWN0aW9uID0gMQorICAgICAgICAgICAgd2ViVmlldy5maW5hbFNlbGVjdGlvbiA9IDIKKyAgICAg
ICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGlyZWN0bHkgPSB0cnVlCisgICAgICAgICAgICBvcGVu
SXRlbVNlbGVjdG9yKCkKKyAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19hbGxfXyIpCisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiB0ZXN0X3JlamVjdCgpIHsKKyAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQor
ICAgICAgICAgICAgdHJ5Q29tcGFyZSh3ZWJWaWV3LCAic2VsZWN0b3JMb2FkZWQiLCB0cnVlKQor
ICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiTm8gbmV3IHNlbGVjdGlvbiB3YXMg
bWFkZSIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X3NlbGVjdEZpcnN0VGhl
blJlamVjdCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcuaW5pdGlhbFNlbGVjdGlvbiA9IDEKKyAg
ICAgICAgICAgIHdlYlZpZXcuZmluYWxTZWxlY3Rpb24gPSAtMQorICAgICAgICAgICAgb3Blbkl0
ZW1TZWxlY3RvcigpCisgICAgICAgICAgICB0cnlDb21wYXJlKHdlYlZpZXcsICJzZWxlY3Rvckxv
YWRlZCIsIHRydWUpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJObyBuZXcg
c2VsZWN0aW9uIHdhcyBtYWRlIikKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2
aW9yL3RzdF9saW5rSG92ZXJlZC5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbGlua0hvdmVyZWQucW1sCmluZGV4
IGM5ODk1ODMxOWNkMGI3YzMzODA5MGMwZDdjM2MyZDc0ZTk5NzE3NGIuLmI4YWIyOTQ5NjhmNjEz
Y2JmMTQzMjcyZGQ1YzlkNzQzMTIxOTVkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9saW5rSG92
ZXJlZC5xbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2xpbmtIb3ZlcmVkLnFtbApAQCAtMiw3ICsyLDcgQEAg
aW1wb3J0IFF0UXVpY2sgMi4wCiBpbXBvcnQgUXRUZXN0IDEuMAogaW1wb3J0IFF0V2ViS2l0IDMu
MAogCi1EZXNrdG9wV2ViVmlldyB7CitXZWJWaWV3IHsKICAgICBpZDogd2ViVmlldwogICAgIHdp
ZHRoOiAyMDAKICAgICBoZWlnaHQ6IDQwMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2xvYWRIdG1s
LnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVz
a3RvcEJlaGF2aW9yL3RzdF9sb2FkSHRtbC5xbWwKaW5kZXggYjQ1YjAxYWM4OTNjYWY0NzcxZjdj
NzdhMzA5NWUzN2U4NDQyMDJjOS4uOWUxNzNkNTZhM2E0OWM2OWVhZGFhM2UzNWQ5MWE4MGNmYmMz
ZmNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X2xvYWRIdG1sLnFtbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3Rf
bG9hZEh0bWwucW1sCkBAIC0yLDcgKzIsNyBAQCBpbXBvcnQgUXRRdWljayAyLjAKIGltcG9ydCBR
dFRlc3QgMS4wCiBpbXBvcnQgUXRXZWJLaXQgMy4wCiAKLURlc2t0b3BXZWJWaWV3IHsKK1dlYlZp
ZXcgewogICAgIGlkOiB3ZWJWaWV3CiAgICAgd2lkdGg6IDIwMAogICAgIGhlaWdodDogNDAwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L0Rlc2t0b3BCZWhhdmlvci90c3RfbWVzc2FnaW5nLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9tZXNzYWdpbmcu
cW1sCmluZGV4IDdmY2M5MWE2NDkxZmI0NzQ1OTkwZjU0YjBkOWFiNjhiZDMzMzZjZDUuLjhkNzk4
NjZjZDVlNmM5ZDhhOTg0YTk2ODNhMGEyYTFmNzA2ZjU2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3Rz
dF9tZXNzYWdpbmcucW1sCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9tZXNzYWdpbmcucW1sCkBAIC00LDcgKzQs
NyBAQCBpbXBvcnQgUXRXZWJLaXQgMy4wCiBpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDMu
MAogCiBJdGVtIHsKLSAgICBEZXNrdG9wV2ViVmlldyB7CisgICAgV2ViVmlldyB7CiAgICAgICAg
IGlkOiB3ZWJWaWV3CiAgICAgICAgIHByb3BlcnR5IHZhcmlhbnQgbGFzdE1lc3NhZ2UKICAgICAg
ICAgZXhwZXJpbWVudGFsLnByZWZlcmVuY2VzLm5hdmlnYXRvclF0T2JqZWN0RW5hYmxlZDogdHJ1
ZQpAQCAtMTMsNyArMTMsNyBAQCBJdGVtIHsKICAgICAgICAgfQogICAgIH0KIAotICAgIERlc2t0
b3BXZWJWaWV3IHsKKyAgICBXZWJWaWV3IHsKICAgICAgICAgaWQ6IG90aGVyV2ViVmlldwogICAg
ICAgICBwcm9wZXJ0eSB2YXJpYW50IGxhc3RNZXNzYWdlCiAgICAgICAgIGV4cGVyaW1lbnRhbC5w
cmVmZXJlbmNlcy5uYXZpZ2F0b3JRdE9iamVjdEVuYWJsZWQ6IHRydWUKQEAgLTIyLDcgKzIyLDcg
QEAgSXRlbSB7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBEZXNrdG9wV2ViVmlldyB7CisgICAg
V2ViVmlldyB7CiAgICAgICAgIGlkOiBkaXNhYmxlZFdlYlZpZXcKICAgICAgICAgcHJvcGVydHkg
Ym9vbCByZWNlaXZlZE1lc3NhZ2UKICAgICAgICAgZXhwZXJpbWVudGFsLnByZWZlcmVuY2VzLm5h
dmlnYXRvclF0T2JqZWN0RW5hYmxlZDogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9uYXZp
Z2F0aW9uUmVxdWVzdGVkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9uYXZpZ2F0aW9uUmVxdWVzdGVkLnFtbApp
bmRleCAzZWY3ZDU1MTZmMjM2NGQzYjZhOTcxNjk4OGViN2NiNTIyMWZlNjljLi4yZjZmZDdlMTA0
YTI4YmMwNGViNzE4YzAzN2Y4NWJiNmY1NTAwYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbmF2
aWdhdGlvblJlcXVlc3RlZC5xbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9EZXNrdG9wQmVoYXZpb3IvdHN0X25hdmlnYXRpb25SZXF1ZXN0ZWQu
cW1sCkBAIC0xMSw3ICsxMSw3IEBAIEl0ZW0gewogICAgIHByb3BlcnR5IHVybCBiZWdpblVybDog
UXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi90ZXN0Mi5odG1sIikKICAgICBwcm9wZXJ0eSB1cmwg
ZW5kVXJsOiBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL3Rlc3QxLmh0bWwiKQogCi0gICAgRGVz
a3RvcFdlYlZpZXcgeworICAgIFdlYlZpZXcgewogICAgICAgICBpZDogd2ViVmlldwogICAgICAg
ICB3aWR0aDogMjAwCiAgICAgICAgIGhlaWdodDogMjAwCkBAIC01MSw3ICs1MSw3IEBAIEl0ZW0g
ewogICAgICAgICBzaWduYWxOYW1lOiAibG9hZFN1Y2NlZWRlZCIKICAgICB9CiAKLSAgICBEZXNr
dG9wV2ViVmlldyB7CisgICAgV2ViVmlldyB7CiAgICAgICAgIGlkOiBvdGhlcldlYlZpZXcKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViVmlldy90c3RfaXRlbVNlbGVjdG9yLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfaXRlbVNlbGVjdG9yLnFt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNkNjhiZTViNDI0N2RhNmM0ZmFkNzFk
OTg2ZjQxZGI1NjQ2NDBiMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dl
YlZpZXcvdHN0X2l0ZW1TZWxlY3Rvci5xbWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBA
QAotaW1wb3J0IFF0UXVpY2sgMi4wCi1pbXBvcnQgUXRUZXN0IDEuMAotaW1wb3J0IFF0V2ViS2l0
IDMuMAotaW1wb3J0IFF0V2ViS2l0LmV4cGVyaW1lbnRhbCAzLjAKLQotLy8gRklYTUU6IHVzZWQg
YmVjYXVzZSB3ZSB3YW50IHRvIGhhdmUgbW91c2VDbGljaygpIHRvIG9wZW4gdGhlIDxzZWxlY3Q+
IHRhZy4gV2UgY2FuIHJlbW92ZSB0aGlzCi0vLyB3aGVuIFRlc3RDYXNlIHN0YXJ0cyBzdXBwb3J0
aW5nIHRvdWNoIGV2ZW50cywgc2VlIGh0dHBzOi8vYnVncmVwb3J0cy5xdC5ub2tpYS5jb20vYnJv
d3NlL1FUQlVHLTIzMDgzLgotaW1wb3J0ICIuLi9EZXNrdG9wQmVoYXZpb3IiCi0KLURlc2t0b3BX
ZWJWaWV3IHsKLSAgICBpZDogd2ViVmlldwotCi0gICAgd2lkdGg6IDQwMAotICAgIGhlaWdodDog
NDAwCi0KLSAgICBwcm9wZXJ0eSBpbnQgaW5pdGlhbFNlbGVjdGlvbgotICAgIHByb3BlcnR5IGlu
dCBmaW5hbFNlbGVjdGlvbgotICAgIHByb3BlcnR5IGJvb2wgdXNlQWNjZXB0RGlyZWN0bHkKLSAg
ICBwcm9wZXJ0eSBib29sIHNlbGVjdG9yTG9hZGVkCi0KLSAgICBleHBlcmltZW50YWwuaXRlbVNl
bGVjdG9yOiBJdGVtIHsKLSAgICAgICAgQ29tcG9uZW50Lm9uQ29tcGxldGVkOiB7Ci0gICAgICAg
ICAgICBpZiAoV2ViVmlldy52aWV3LmluaXRpYWxTZWxlY3Rpb24gIT0gLTEpCi0gICAgICAgICAg
ICAgICAgbW9kZWwuaXRlbXMuc2VsZWN0KFdlYlZpZXcudmlldy5pbml0aWFsU2VsZWN0aW9uKQot
Ci0gICAgICAgICAgICBpZiAoV2ViVmlldy52aWV3LmZpbmFsU2VsZWN0aW9uID09IC0xKQotICAg
ICAgICAgICAgICAgIG1vZGVsLnJlamVjdCgpCi0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAodXNlQWNjZXB0RGlyZWN0bHkpIHsKLSAgICAgICAgICAgICAgICAgICAgbW9k
ZWwuYWNjZXB0KFdlYlZpZXcudmlldy5maW5hbFNlbGVjdGlvbikKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtb2RlbC5pdGVtcy5zZWxlY3QoV2ViVmlldy52
aWV3LmZpbmFsU2VsZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBtb2RlbC5hY2NlcHQoKQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgV2ViVmlldy52
aWV3LnNlbGVjdG9yTG9hZGVkID0gdHJ1ZQotICAgICAgICB9Ci0gICAgfQotCi0gICAgU2lnbmFs
U3B5IHsKLSAgICAgICAgaWQ6IGxvYWRTcHkKLSAgICAgICAgdGFyZ2V0OiB3ZWJWaWV3Ci0gICAg
ICAgIHNpZ25hbE5hbWU6ICJsb2FkU3VjY2VlZGVkIgotICAgIH0KLQotICAgIFNpZ25hbFNweSB7
Ci0gICAgICAgIGlkOiB0aXRsZVNweQotICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKLSAgICAgICAg
c2lnbmFsTmFtZTogInRpdGxlQ2hhbmdlZCIKLSAgICB9Ci0KLSAgICBUZXN0Q2FzZSB7Ci0gICAg
ICAgIGlkOiB0ZXN0Ci0gICAgICAgIG5hbWU6ICJXZWJWaWV3SXRlbVNlbGVjdG9yIgotICAgICAg
ICB3aGVuOiB3aW5kb3dTaG93bgotCi0gICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAg
ICAgICB3ZWJWaWV3LmluaXRpYWxTZWxlY3Rpb24gPSAtMQotICAgICAgICAgICAgd2ViVmlldy5m
aW5hbFNlbGVjdGlvbiA9IC0xCi0gICAgICAgICAgICB3ZWJWaWV3LnVzZUFjY2VwdERpcmVjdGx5
ID0gZmFsc2UKLSAgICAgICAgICAgIHdlYlZpZXcuc2VsZWN0b3JMb2FkZWQgPSBmYWxzZQotICAg
ICAgICAgICAgbG9hZFNweS5jbGVhcigpCi0gICAgICAgICAgICB3ZWJWaWV3LmxvYWQoUXQucmVz
b2x2ZWRVcmwoIi4uL2NvbW1vbi9zZWxlY3QuaHRtbCIpKQotICAgICAgICAgICAgbG9hZFNweS53
YWl0KCkKLSAgICAgICAgICAgIHRpdGxlU3B5LmNsZWFyKCkKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIG9wZW5JdGVtU2VsZWN0b3IoKSB7Ci0gICAgICAgICAgICBtb3VzZUNsaWNrKHdl
YlZpZXcsIDE1LCAxNSwgUXQuTGVmdEJ1dHRvbikKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIHRlc3RfYWNjZXB0KCkgewotICAgICAgICAgICAgd2ViVmlldy5maW5hbFNlbGVjdGlvbiA9
IDEKLSAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQotICAgICAgICAgICAgdGl0bGVTcHku
d2FpdCgpCi0gICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJfX2Nsb3NlZF9fIikK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RfYWNjZXB0RGlyZWN0bHkoKSB7Ci0g
ICAgICAgICAgICB3ZWJWaWV3LmZpbmFsU2VsZWN0aW9uID0gMQotICAgICAgICAgICAgd2ViVmll
dy51c2VBY2NlcHREaXJlY3RseSA9IHRydWUKLSAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3Io
KQotICAgICAgICAgICAgdGl0bGVTcHkud2FpdCgpCi0gICAgICAgICAgICBjb21wYXJlKHdlYlZp
ZXcudGl0bGUsICJfX2Nsb3NlZF9fIikKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHRl
c3Rfc2VsZWN0Rmlyc3RUaGVuQWNjZXB0KCkgewotICAgICAgICAgICAgd2ViVmlldy5pbml0aWFs
U2VsZWN0aW9uID0gMQotICAgICAgICAgICAgd2ViVmlldy5maW5hbFNlbGVjdGlvbiA9IDIKLSAg
ICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQotICAgICAgICAgICAgdGl0bGVTcHkud2FpdCgp
Ci0gICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJfX2FsbF9fIikKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3Rfc2VsZWN0Rmlyc3RUaGVuQWNjZXB0RGlyZWN0bHko
KSB7Ci0gICAgICAgICAgICB3ZWJWaWV3LmluaXRpYWxTZWxlY3Rpb24gPSAxCi0gICAgICAgICAg
ICB3ZWJWaWV3LmZpbmFsU2VsZWN0aW9uID0gMgotICAgICAgICAgICAgd2ViVmlldy51c2VBY2Nl
cHREaXJlY3RseSA9IHRydWUKLSAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQotICAgICAg
ICAgICAgdGl0bGVTcHkud2FpdCgpCi0gICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUs
ICJfX2FsbF9fIikKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RfcmVqZWN0KCkg
ewotICAgICAgICAgICAgb3Blbkl0ZW1TZWxlY3RvcigpCi0gICAgICAgICAgICB0cnlDb21wYXJl
KHdlYlZpZXcsICJzZWxlY3RvckxvYWRlZCIsIHRydWUpCi0gICAgICAgICAgICBjb21wYXJlKHdl
YlZpZXcudGl0bGUsICJObyBuZXcgc2VsZWN0aW9uIHdhcyBtYWRlIikKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHRlc3Rfc2VsZWN0Rmlyc3RUaGVuUmVqZWN0KCkgewotICAgICAgICAg
ICAgd2ViVmlldy5pbml0aWFsU2VsZWN0aW9uID0gMQotICAgICAgICAgICAgd2ViVmlldy5maW5h
bFNlbGVjdGlvbiA9IC0xCi0gICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKLSAgICAgICAg
ICAgIHRyeUNvbXBhcmUod2ViVmlldywgInNlbGVjdG9yTG9hZGVkIiwgdHJ1ZSkKLSAgICAgICAg
ICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIk5vIG5ldyBzZWxlY3Rpb24gd2FzIG1hZGUiKQot
ICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5EZXNrdG9wQmVoYXZpb3IucHJvIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5EZXNr
dG9wQmVoYXZpb3IucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNTAyYzYzNGIxZjdmNmRlOWU2YjU3OTc5YTRm
MmU3YjhiNmY4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLkRlc2t0b3BCZWhhdmlvci5wcm8KQEAgLTAs
MCArMSwyMCBAQAoraW5jbHVkZSguLi90ZXN0cy5wcmkpCitUQVJHRVQgPSB0c3RfcW1sdGVzdHNf
RGVza3RvcEJlaGF2aW9yCisKK0NPTkZJRyArPSBxdHdlYmtpdC1wcml2YXRlCitDT05GSUcgKz0g
d2Fybl9vbiB0ZXN0Y2FzZQorCitRVCAtPSB0ZXN0bGliCitRVCArPSBxbWx0ZXN0CisKK0RFRklO
RVMgKz0gRElTQUJMRV9GTElDS0FCTEVfVklFV1BPUlQ9MQorIyBUZXN0IHRoZSBRTUwgZmlsZXMg
dW5kZXIgRGVza3RvcEJlaGF2aW9yIGluIHRoZSBzb3VyY2UgcmVwb3NpdG9yeS4KK0RFRklORVMg
Kz0gUVVJQ0tfVEVTVF9TT1VSQ0VfRElSPVwiXFxcIiQkUFdEJCR7UU1BS0VfRElSX1NFUH1EZXNr
dG9wQmVoYXZpb3JcXFwiXCIKK0RFRklORVMgKz0gSU1QT1JUX0RJUj1cIlxcXCIkJHtST09UX0JV
SUxEX0RJUn0kJHtRTUFLRV9ESVJfU0VQfWltcG9ydHNcXFwiXCIKKworT1RIRVJfRklMRVMgKz0g
XAorICAgIERlc2t0b3BCZWhhdmlvci9EZXNrdG9wV2ViVmlldy5xbWwgXAorICAgIERlc2t0b3BC
ZWhhdmlvci90c3RfbGlua0hvdmVyZWQucW1sIFwKKyAgICBEZXNrdG9wQmVoYXZpb3IvdHN0X2xv
YWRIdG1sLnFtbCBcCisgICAgRGVza3RvcEJlaGF2aW9yL3RzdF9tZXNzYWdpbmcucW1sIFwKKyAg
ICBEZXNrdG9wQmVoYXZpb3IvdHN0X25hdmlnYXRpb25SZXF1ZXN0ZWQucW1sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LldlYlZpZXcucHJvIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0
ZXN0cy9xbWx0ZXN0cy5XZWJWaWV3LnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjI2NzkzYzllYmFmODEyNzkx
ZmI2ZjBmOTRjN2M3Y2RjMTMwMzEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5XZWJWaWV3LnBybwpAQCAt
MCwwICsxLDI4IEBACitpbmNsdWRlKC4uL3Rlc3RzLnByaSkKK1RBUkdFVCA9IHRzdF9xbWx0ZXN0
c19XZWJWaWV3CisKK0NPTkZJRyArPSBxdHdlYmtpdC1wcml2YXRlCitDT05GSUcgKz0gd2Fybl9v
biB0ZXN0Y2FzZQorCitRVCAtPSB0ZXN0bGliCitRVCArPSBxbWx0ZXN0CisKKyMgVGVzdCB0aGUg
UU1MIGZpbGVzIHVuZGVyIFdlYlZpZXcgaW4gdGhlIHNvdXJjZSByZXBvc2l0b3J5LgorREVGSU5F
UyArPSBRVUlDS19URVNUX1NPVVJDRV9ESVI9XCJcXFwiJCRQV0QkJHtRTUFLRV9ESVJfU0VQfVdl
YlZpZXdcXFwiXCIKK0RFRklORVMgKz0gSU1QT1JUX0RJUj1cIlxcXCIkJHtST09UX0JVSUxEX0RJ
Un0kJHtRTUFLRV9ESVJfU0VQfWltcG9ydHNcXFwiXCIKKworT1RIRVJfRklMRVMgKz0gXAorICAg
IFdlYlZpZXcvdHN0X2Zhdkljb25Mb2FkLnFtbCBcCisgICAgV2ViVmlldy90c3RfZG93bmxvYWQu
cW1sIFwKKyAgICBXZWJWaWV3L3RzdF9nZW9wZXJtaXNzaW9uLnFtbCBcCisgICAgV2ViVmlldy90
c3RfaXRlbVNlbGVjdG9yLnFtbCBcCisgICAgV2ViVmlldy90c3RfamF2YVNjcmlwdERpYWxvZ3Mu
cW1sIFwKKyAgICBXZWJWaWV3L3RzdF9sb2FkRmFpbC5xbWwgXAorICAgIFdlYlZpZXcvdHN0X2xv
YWRJZ25vcmUucW1sIFwKKyAgICBXZWJWaWV3L3RzdF9sb2FkSHRtbC5xbWwgXAorICAgIFdlYlZp
ZXcvdHN0X2xvYWRQcm9ncmVzcy5xbWwgXAorICAgIFdlYlZpZXcvdHN0X2xvYWRQcm9ncmVzc1Np
Z25hbC5xbWwgXAorICAgIFdlYlZpZXcvdHN0X3ByZWZlcmVuY2VzLnFtbCBcCisgICAgV2ViVmll
dy90c3RfcHJvcGVydGllcy5xbWwgXAorICAgIFdlYlZpZXcvdHN0X3RpdGxlQ2hhbmdlZC5xbWwg
XAorICAgIFdlYlZpZXcvdHN0X2FwcGxpY2F0aW9uU2NoZW1lLnFtbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9xbWx0ZXN0cy5wcm8g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LnBybwppbmRleCBjOGNlODdhN2ZjMWU4YzA2MzM5ZDRjN2IwNDI4N2U5YzcxZTY4NWVjLi5lOWMx
ODU3NjUxZjI2YTZhMzM5YTc4YzQ5MGMxMmM2ZTQ0ODZkYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3RzLnBybworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL3FtbHRlc3Rz
LnBybwpAQCAtMSwzMiArMSwzIEBACi1pbmNsdWRlKC4uL3Rlc3RzLnByaSkKK1RFTVBMQVRFID0g
c3ViZGlycwogCi1DT05GSUcgKz0gcXR3ZWJraXQtcHJpdmF0ZQotQ09ORklHICs9IHdhcm5fb24g
dGVzdGNhc2UKLQotUVQgLT0gdGVzdGxpYgotUVQgKz0gcW1sdGVzdAotCi0jIFFNTCBmaWxlcyB0
ZXN0ZWQgYXJlIHRoZSBvbmVzIGluIFdlYktpdCBzb3VyY2UgcmVwb3NpdG9yeS4KLURFRklORVMg
Kz0gUVVJQ0tfVEVTVF9TT1VSQ0VfRElSPVwiXFxcIiQkUFdEXFxcIlwiCi1ERUZJTkVTICs9IElN
UE9SVF9ESVI9XCJcXFwiJCR7Uk9PVF9CVUlMRF9ESVJ9JCR7UU1BS0VfRElSX1NFUH1pbXBvcnRz
XFxcIlwiCi0KLU9USEVSX0ZJTEVTICs9IFwKLSAgICBEZXNrdG9wQmVoYXZpb3IvRGVza3RvcFdl
YlZpZXcucW1sIFwKLSAgICBEZXNrdG9wQmVoYXZpb3IvdHN0X2xpbmtIb3ZlcmVkLnFtbCBcCi0g
ICAgRGVza3RvcEJlaGF2aW9yL3RzdF9sb2FkSHRtbC5xbWwgXAotICAgIERlc2t0b3BCZWhhdmlv
ci90c3RfbWVzc2FnaW5nLnFtbCBcCi0gICAgRGVza3RvcEJlaGF2aW9yL3RzdF9uYXZpZ2F0aW9u
UmVxdWVzdGVkLnFtbCBcCi0gICAgV2ViVmlldy90c3RfZmF2SWNvbkxvYWQucW1sIFwKLSAgICBX
ZWJWaWV3L3RzdF9kb3dubG9hZC5xbWwgXAotICAgIFdlYlZpZXcvdHN0X2dlb3Blcm1pc3Npb24u
cW1sIFwKLSAgICBXZWJWaWV3L3RzdF9pdGVtU2VsZWN0b3IucW1sIFwKLSAgICBXZWJWaWV3L3Rz
dF9qYXZhU2NyaXB0RGlhbG9ncy5xbWwgXAotICAgIFdlYlZpZXcvdHN0X2xvYWRGYWlsLnFtbCBc
Ci0gICAgV2ViVmlldy90c3RfbG9hZElnbm9yZS5xbWwgXAotICAgIFdlYlZpZXcvdHN0X2xvYWRI
dG1sLnFtbCBcCi0gICAgV2ViVmlldy90c3RfbG9hZFByb2dyZXNzLnFtbCBcCi0gICAgV2ViVmll
dy90c3RfbG9hZFByb2dyZXNzU2lnbmFsLnFtbCBcCi0gICAgV2ViVmlldy90c3RfcHJlZmVyZW5j
ZXMucW1sIFwKLSAgICBXZWJWaWV3L3RzdF9wcm9wZXJ0aWVzLnFtbCBcCi0gICAgV2ViVmlldy90
c3RfdGl0bGVDaGFuZ2VkLnFtbCBcCi0gICAgV2ViVmlldy90c3RfYXBwbGljYXRpb25TY2hlbWUu
cW1sCitTVUJESVJTICs9IHFtbHRlc3RzLkRlc2t0b3BCZWhhdmlvci5wcm8gcW1sdGVzdHMuV2Vi
Vmlldy5wcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcW1sdGVzdHMvdHN0X3FtbHRlc3RzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvdHN0X3FtbHRlc3RzLmNwcAppbmRleCA4YzhjNGIzZTZkZTVi
N2QyNmFmNzhjZjhlMTdhZDg3YzNhMDE0OTdhLi5hODBjNWMzODk2ZWExZDRiOWY0MjFhM2EyMjI1
Zjg0ODMxNzMzZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL3RzdF9xbWx0ZXN0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy90c3RfcW1sdGVzdHMuY3BwCkBAIC0yMCw2ICsy
MCw3IEBACiAjaW5jbHVkZSAiLi4vYnl0ZWFycmF5dGVzdGRhdGEuaCIKICNpbmNsdWRlICIuLi91
dGlsLmgiCiAKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxRVmFyTGVu
Z3RoQXJyYXk+CiAjaW5jbHVkZSA8UXRRdWlja1Rlc3QvcXVpY2t0ZXN0Lmg+CiAjaW5jbHVkZSA8
UXRXaWRnZXRzL1FBcHBsaWNhdGlvbj4KQEAgLTQzLDUgKzQ0LDkgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogICAgIC8vIFRoaXMgY2FuIGJlIHJlbW92ZWQgYXMgc29vbiBhcyB3
ZSBkbyBub3QgdXNlIFF0V2lkZ2V0cyBhbnkgbW9yZS4KICAgICBRQXBwbGljYXRpb24gYXBwKGFy
Z2MsIGFyZ3YpOwogICAgIHFtbFJlZ2lzdGVyVHlwZTxCeXRlQXJyYXlUZXN0RGF0YT4oIlRlc3Qi
LCAxLCAwLCAiQnl0ZUFycmF5VGVzdERhdGEiKTsKKworI2lmZGVmIERJU0FCTEVfRkxJQ0tBQkxF
X1ZJRVdQT1JUCisgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0RmxpY2thYmxlVmll
d3BvcnRFbmFibGVkKGZhbHNlKTsKKyNlbmRpZgogICAgIHJldHVybiBxdWlja190ZXN0X21haW4o
YXJnYywgYXJndiwgInFtbHRlc3RzIiwgMCwgUVVJQ0tfVEVTVF9TT1VSQ0VfRElSKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxl
ci5jcHAKaW5kZXggMDlmODk2MDIxYTlmOTA5YzBlYzM3OTYxYjM0YTNlZmE4MzgyMDQ0Yy4uMDRj
OGZkMWRhYTUzZTBiODM1ZTE5YjIxZDFkYmJhODVlN2NlNmViNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKQEAgLTg3
LDYgKzg3LDcgQEAgc3RhdGljIGlubGluZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyb3BBY3Rp
b25Ub0RyYWdPcGVyYXRpb24oUXQ6OkRyb3BBY3Rpb25zIGEKIAogUXRXZWJQYWdlRXZlbnRIYW5k
bGVyOjpRdFdlYlBhZ2VFdmVudEhhbmRsZXIoV0tQYWdlUmVmIHBhZ2VSZWYsIFFRdWlja1dlYlBh
Z2UqIHFtbFdlYlBhZ2UsIFFRdWlja1dlYlZpZXcqIHFtbFdlYlZpZXcpCiAgICAgOiBtX3dlYlBh
Z2VQcm94eSh0b0ltcGwocGFnZVJlZikpCisgICAgLCBtX2ludGVyYWN0aW9uRW5naW5lKDApCiAg
ICAgLCBtX3Bhbkdlc3R1cmVSZWNvZ25pemVyKHRoaXMpCiAgICAgLCBtX3BpbmNoR2VzdHVyZVJl
Y29nbml6ZXIodGhpcykKICAgICAsIG1fdGFwR2VzdHVyZVJlY29nbml6ZXIodGhpcykKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMjFkN2RlZTQy
ZjY0M2I3YmM5NmY3MjgxZWQzNDBkOTEwZTJmOGJmLi5mOTliMTdmMzg0N2ZhMjk2Y2JiODQzNzc5
MjgwNWExNmFkZGY1Y2FjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDItMDIgIEpvY2VseW4gVHVyY290dGUg
IDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFNwbGl0IFFRdWlj
a1dlYlZpZXdQcml2YXRlIGluIHR3byBjbGFzc2VzLCBmb3IgZGVza3RvcCBhbmQgdG91Y2ggYmVo
YXZpb3IuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzYzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHA6CisgICAgICAgIChCcm93c2VyV2luZG93
OjpCcm93c2VyV2luZG93KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFw
cGxpY2F0aW9uLmNwcDoKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246OnNlbmRUb3Vj
aEV2ZW50KToKKyAgICAgICAgKE1pbmlCcm93c2VyQXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRp
b25zKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmg6
CisgICAgICAgIChXaW5kb3dPcHRpb25zKToKKyAgICAgICAgKFdpbmRvd09wdGlvbnM6OldpbmRv
d09wdGlvbnMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3
UXQuY3BwOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9tYWluLmNwcDoKKyAgICAgICAgKG1haW4p
OgorCiAyMDExLTEyLTA1ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XSBFbmFibGUgZGV2ZWxvcGVyIGV4dHJhcyBvbiBwYWdlcyBp
biBNaW5pQnJvd3Nlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJX
aW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXgg
YTc2ODU4MWRjYjliMjgyY2UxM2U5ZDVhZThjNjllODg0OGMxYjdhZS4uNWNjOWU2NGMyOWJhNWFh
Y2RjNjBhNDdlMmVhODI2YzRjMGM0OWZjMSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nlcldp
bmRvdy5jcHAKQEAgLTU0LDggKzU0LDYgQEAgQnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyhX
aW5kb3dPcHRpb25zKiBvcHRpb25zKQogICAgIHNldFNvdXJjZShRVXJsKCJxcmM6L3FtbC9Ccm93
c2VyV2luZG93LnFtbCIpKTsKICAgICBjb25uZWN0KHJvb3RPYmplY3QoKSwgU0lHTkFMKHBhZ2VU
aXRsZUNoYW5nZWQoUVN0cmluZykpLCB0aGlzLCBTTE9UKHNldFdpbmRvd1RpdGxlKFFTdHJpbmcp
KSk7CiAgICAgY29ubmVjdChyb290T2JqZWN0KCksIFNJR05BTChuZXdXaW5kb3coUVN0cmluZykp
LCB0aGlzLCBTTE9UKG5ld1dpbmRvdyhRU3RyaW5nKSkpOwotICAgIGlmIChvcHRpb25zLT51c2VU
cmFkaXRpb25hbERlc2t0b3BCZWhhdmlvcigpKQotICAgICAgICB3ZWJWaWV3KCktPmV4cGVyaW1l
bnRhbCgpLT5zZXRVc2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIodHJ1ZSk7CiAgICAgaWYg
KG9wdGlvbnMtPnN0YXJ0RnVsbFNjcmVlbigpKQogICAgICAgICBzaG93RnVsbFNjcmVlbigpOwog
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJB
cHBsaWNhdGlvbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0
aW9uLmNwcAppbmRleCA4ODI2MGI4Y2NhNzQ0ZmU3ZDY4Y2NiNzllNjQ4ZjMxMTcwNTAyNWM0Li45
YTQ2ZjUxMTZkMDI0OGM5ZTNhYzBjZWU3MmUxYjQ2ZTkwM2Y1ODcyIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIk1pbmlCcm93c2VyQXBwbGljYXRpb24uaCIKIAogI2luY2x1ZGUgIkJyb3dz
ZXJXaW5kb3cuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJ1dGls
cy5oIgogI2luY2x1ZGUgPFFSZWdFeHA+CiAjaW5jbHVkZSA8UUV2ZW50PgpAQCAtMTgyLDcgKzE4
Myw3IEBAIHZvaWQgTWluaUJyb3dzZXJBcHBsaWNhdGlvbjo6c2VuZFRvdWNoRXZlbnQoQnJvd3Nl
cldpbmRvdyogYnJvd3NlcldpbmRvdykKICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5k
bGVUb3VjaEV2ZW50KGJyb3dzZXJXaW5kb3csIGRldmljZSwgbV90b3VjaFBvaW50cy52YWx1ZXMo
KSk7CiAKICAgICBib29sIGhvbGRpbmdDb250cm9sID0gUUFwcGxpY2F0aW9uOjprZXlib2FyZE1v
ZGlmaWVycygpLnRlc3RGbGFnKFF0OjpDb250cm9sTW9kaWZpZXIpOwotICAgIGlmICghbV93aW5k
b3dPcHRpb25zLnVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW9yKCkpCisgICAgaWYgKFFRdWlj
a1dlYlZpZXdFeHBlcmltZW50YWw6OmZsaWNrYWJsZVZpZXdwb3J0RW5hYmxlZCgpKQogICAgICAg
ICBicm93c2VyV2luZG93LT51cGRhdGVWaXN1YWxNb2NrVG91Y2hQb2ludHMoaG9sZGluZ0NvbnRy
b2wgPyBtX3RvdWNoUG9pbnRzLnZhbHVlcygpIDogUUxpc3Q8UVdpbmRvd1N5c3RlbUludGVyZmFj
ZTo6VG91Y2hQb2ludD4oKSk7CiAKICAgICAvLyBHZXQgcmlkIG9mIHRvdWNoLXBvaW50cyB0aGF0
IGFyZSBubyBsb25nZXIgdmFsaWQKQEAgLTIyMCw5ICsyMjEsOSBAQCB2b2lkIE1pbmlCcm93c2Vy
QXBwbGljYXRpb246OmhhbmRsZVVzZXJPcHRpb25zKCkKICAgICB9CiAKICAgICBjb25zdCBib29s
IHVzZURlc2t0b3BCZWhhdmlvciA9IHRha2VPcHRpb25GbGFnKCZhcmdzLCAiLS1kZXNrdG9wIik7
CisgICAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6c2V0RmxpY2thYmxlVmlld3BvcnRFbmFi
bGVkKCF1c2VEZXNrdG9wQmVoYXZpb3IpOwogICAgIGlmICghdXNlRGVza3RvcEJlaGF2aW9yKQog
ICAgICAgICBxcHV0ZW52KCJRVF9XRUJLSVRfVVNFX01PQklMRV9USEVNRSIsIFFCeXRlQXJyYXko
IjEiKSk7Ci0gICAgbV93aW5kb3dPcHRpb25zLnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2
aW9yKHVzZURlc2t0b3BCZWhhdmlvcik7CiAgICAgbV93aW5kb3dPcHRpb25zLnNldFByaW50TG9h
ZGVkVXJscyh0YWtlT3B0aW9uRmxhZygmYXJncywgIi12IikpOwogICAgIG1fd2luZG93T3B0aW9u
cy5zZXRTdGFydE1heGltaXplZCh0YWtlT3B0aW9uRmxhZygmYXJncywgIi0tbWF4aW1pemUiKSk7
CiAgICAgbV93aW5kb3dPcHRpb25zLnNldFN0YXJ0RnVsbFNjcmVlbih0YWtlT3B0aW9uRmxhZygm
YXJncywgIi1mIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dz
ZXJBcHBsaWNhdGlvbi5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXJBcHBsaWNh
dGlvbi5oCmluZGV4IDQzZjgzY2ZlMWE3NTdlZDJhYmVhYzFiZTRmYmQxNDU1NDZhMDQ4ZGYuLmI1
NTY1ODU1ZTRlMmI0OTg2Y2ExMWUzMmVmNTYwZmM3MjIxZGU1YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyQXBwbGljYXRpb24uaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9NaW5pQnJvd3NlckFwcGxpY2F0aW9uLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xh
c3MgQnJvd3NlcldpbmRvdzsKIGNsYXNzIFdpbmRvd09wdGlvbnMgOiBwdWJsaWMgUU9iamVjdCB7
CiAgICAgUV9PQkpFQ1QKICAgICBRX1BST1BFUlRZKGJvb2wgcHJpbnRMb2FkZWRVcmxzIFJFQUQg
cHJpbnRMb2FkZWRVcmxzKQotICAgIFFfUFJPUEVSVFkoYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0
b3BCZWhhdmlvciBSRUFEIHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW9yKQogICAgIFFfUFJP
UEVSVFkoYm9vbCBzdGFydE1heGltaXplZCBSRUFEIHN0YXJ0TWF4aW1pemVkKQogICAgIFFfUFJP
UEVSVFkoYm9vbCB0b3VjaE1vY2tpbmdFbmFibGVkIFJFQUQgdG91Y2hNb2NraW5nRW5hYmxlZCBX
UklURSBzZXRUb3VjaE1vY2tpbmdFbmFibGVkIE5PVElGWSB0b3VjaE1vY2tpbmdFbmFibGVkQ2hh
bmdlZCkKIApAQCAtNTEsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgV2luZG93T3B0aW9ucyhRT2Jq
ZWN0KiBwYXJlbnQgPSAwKQogICAgICAgICA6IFFPYmplY3QocGFyZW50KQogICAgICAgICAsIG1f
cHJpbnRMb2FkZWRVcmxzKGZhbHNlKQotICAgICAgICAsIG1fdXNlVHJhZGl0aW9uYWxEZXNrdG9w
QmVoYXZpb3IoZmFsc2UpCiAgICAgICAgICwgbV9zdGFydE1heGltaXplZChmYWxzZSkKICAgICAg
ICAgLCBtX3RvdWNoTW9ja2luZ0VuYWJsZWQodHJ1ZSkKICAgICAgICAgLCBtX3dpbmRvd1NpemUo
UVNpemUoOTgwLCA3MzUpKQpAQCAtNjAsOCArNTgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFByaW50TG9hZGVkVXJscyhib29sIGVuYWJsZWQpIHsgbV9wcmludExvYWRlZFVybHMgPSBlbmFi
bGVkOyB9CiAgICAgYm9vbCBwcmludExvYWRlZFVybHMoKSBjb25zdCB7IHJldHVybiBtX3ByaW50
TG9hZGVkVXJsczsgfQotICAgIHZvaWQgc2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Io
Ym9vbCBlbmFibGVkKSB7IG1fdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3IgPSBlbmFibGVk
OyB9Ci0gICAgYm9vbCB1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvcigpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFN0YXJ0
TWF4aW1pemVkKGJvb2wgZW5hYmxlZCkgeyBtX3N0YXJ0TWF4aW1pemVkID0gZW5hYmxlZDsgfQog
ICAgIGJvb2wgc3RhcnRNYXhpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0TWF4aW1pemVk
OyB9CiAgICAgdm9pZCBzZXRTdGFydEZ1bGxTY3JlZW4oYm9vbCBlbmFibGVkKSB7IG1fc3RhcnRG
dWxsU2NyZWVuID0gZW5hYmxlZDsgfQpAQCAtODIsNyArNzgsNiBAQCBzaWduYWxzOgogCiBwcml2
YXRlOgogICAgIGJvb2wgbV9wcmludExvYWRlZFVybHM7Ci0gICAgYm9vbCBtX3VzZVRyYWRpdGlv
bmFsRGVza3RvcEJlaGF2aW9yOwogICAgIGJvb2wgbV9zdGFydE1heGltaXplZDsKICAgICBib29s
IG1fc3RhcnRGdWxsU2NyZWVuOwogICAgIGJvb2wgbV90b3VjaE1vY2tpbmdFbmFibGVkOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAppbmRleCA0
MjU5OTEzMjRmOTA3MmRmYzFmODNlMmZkNGEwNDFhM2E5ZmVjZGYwLi4xYzNjZjY5N2E3MDVmODQ5
YWMyMjRiMTQ2YTY5ZGY2OTIwNWMwMzY3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcApAQCAtNzUsNyArNzUsNiBAQCBQbGF0Zm9ybVdlYlZp
ZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdybwogICAgICwgbV9tb2RhbEV2ZW50TG9vcCgwKQogewogICAgIFFRdWlja1dlYlZp
ZXdFeHBlcmltZW50YWwgZXhwZXJpbWVudGFsKG1fdmlldyk7Ci0gICAgZXhwZXJpbWVudGFsLnNl
dFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cih0cnVlKTsKICAgICBleHBlcmltZW50YWwu
c2V0UmVuZGVyVG9PZmZzY3JlZW5CdWZmZXIodHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvbWFpbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0
L21haW4uY3BwCmluZGV4IGJkYmFmZDRjOWJhNTJmODRhNDAwN2JhYzYwOTFkODM5ZjBjODczNDAu
LjZjNDQ3YmRhNWZhYTA5M2RhMmVlNjkwZmVmMjIxNzJmZjBmNzkwNTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvbWFpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9xdC9tYWluLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
CiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3Au
aCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTkxLDYgKzkyLDcgQEAgaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgcXB1dGVudigiUVRfV0VCS0lUX1NVUFBS
RVNTX1dFQl9QUk9DRVNTX09VVFBVVCIsICIxIik7CiAgICAgfQogCisgICAgUVF1aWNrV2ViVmll
d0V4cGVyaW1lbnRhbDo6c2V0RmxpY2thYmxlVmlld3BvcnRFbmFibGVkKGZhbHNlKTsKICAgICBR
QXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOwogICAgIExhdW5jaGVyIGxhdW5jaGVyKGFyZ2Ms
IGFyZ3YpOwogICAgIFFUaW1lcjo6c2luZ2xlU2hvdCgwLCAmbGF1bmNoZXIsIFNMT1QobGF1bmNo
KCkpKTsK
</data>
<flag name="review"
          id="126566"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>