<?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>133582</bug_id>
          
          <creation_ts>2014-06-06 12:16:12 -0700</creation_ts>
          <short_desc>WK2 iOS: Adopt the new UIAlertController API to replace UIActionSheet</short_desc>
          <delta_ts>2014-06-06 15:07:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013837</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-06-06 12:16:12 -0700</bug_when>
    <thetext>UIActionSheet is deprecated in iOS8.

&lt;rdar://problem/16845223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013838</commentid>
    <comment_count>1</comment_count>
      <attachid>232626</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-06-06 12:20:26 -0700</bug_when>
    <thetext>Created attachment 232626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013839</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-06 12:21:45 -0700</bug_when>
    <thetext>Attachment 232626 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:200:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:209:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:210:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:305:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:307:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013840</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-06-06 12:23:55 -0700</bug_when>
    <thetext>Wrong radar. This is the correct one. I fixed it in the ChangeLog &lt;rdar://problem/16845223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013841</commentid>
    <comment_count>4</comment_count>
      <attachid>232626</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-06 12:59:27 -0700</bug_when>
    <thetext>Comment on attachment 232626
Patch

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

This looks good to me. A lot of small comments. But r=me

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.mm:50
&gt; +    WKElementActionDismissalHandler _dismissalHandler;

I think this needs to be released in -dealloc because this is a (copy) property.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.h:34
&gt; +@interface WKActionSheet : UIAlertController

Nit: We may want to rename this class and file. Fine for now.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:44
&gt; +    RetainPtr&lt;id &lt;UIPopoverPresentationControllerDelegate&gt;&gt; _popoverPresentationControllerDelegateWhileRotating;

Do you really want a RetainPtr&lt;&gt; here? This is a delegate.

Also, it looks like you can remove _delegateWhileRotating, it is no longer used.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:95
&gt; +    UIViewController *presentedViewController = (_presentedViewControllerWhileRotating.get()) ? _presentedViewControllerWhileRotating.get() : self;

Style: Unnecessary parenthesis around the ternary condition.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:124
&gt; +    // We want to save the view controller that is currently being presented to re-present it after rotation.

Typo: Extra &quot;it&quot; at the end of the sentence.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:143
&gt; +

Style: Extra blank line.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:184
&gt; +    UIViewController *presentedViewController = (_presentedViewControllerWhileRotating.get()) ? _presentedViewControllerWhileRotating.get() : self;

Style: Extra parenthesis.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:196
&gt;      _isRotating = NO;

Should &quot;_isRotating = NO&quot; be in -didRotate? Seems misleading that something else might change this internal only flag besides rotation.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:200
&gt; +    for (_WKElementAction *action in actions)

Style: Give this for block braces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013850</commentid>
    <comment_count>5</comment_count>
      <attachid>232626</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-06-06 14:21:21 -0700</bug_when>
    <thetext>Comment on attachment 232626
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.mm:50
&gt;&gt; +    WKElementActionDismissalHandler _dismissalHandler;
&gt; 
&gt; I think this needs to be released in -dealloc because this is a (copy) property.

You are absolutely right. My bad.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKActionSheet.mm:44
&gt;&gt; +    RetainPtr&lt;id &lt;UIPopoverPresentationControllerDelegate&gt;&gt; _popoverPresentationControllerDelegateWhileRotating;
&gt; 
&gt; Do you really want a RetainPtr&lt;&gt; here? This is a delegate.
&gt; 
&gt; Also, it looks like you can remove _delegateWhileRotating, it is no longer used.

The code that does the similar thing for WK1 calls retain when assigning _popoverPresentationControllerDelegateWhileRotating, that is why I opted for RetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013860</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-06-06 15:07:09 -0700</bug_when>
    <thetext>Committed revision 169664.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232626</attachid>
            <date>2014-06-06 12:20:26 -0700</date>
            <delta_ts>2014-06-06 14:21:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>removeactionsheet.txt</filename>
            <type>text/plain</type>
            <size>22689</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTY1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA2LTA2ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgdGhlIG5ldyBVSUFs
ZXJ0Q29udHJvbGxlciBBUEkgdG8gcmVwbGFjZSBVSUFjdGlvblNoZWV0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTgyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNjg0NzQzMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVSUFjdGlvblNoZWV0IGlzIGRlcHJlY2F0ZWQuIFdlIG5lZWQgdG8gbW92
ZSBvdXQgYWN0aW9uIHNoZWV0cworICAgICAgICBpbXBsZW1lbnRhdGlvbiB0byBVSUFsZXJ0Vmll
dy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXQgcHJlc2VudFNo
ZWV0RnJvbVJlY3Q6XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXQgZG9uZVdpdGhTaGVldF0p
OgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0IHdpbGxSb3RhdGVdKToKKyAgICAgICAgKC1bV0tB
Y3Rpb25TaGVldCB1cGRhdGVTaGVldFBvc2l0aW9uXSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hl
ZXQgX2RpZFJvdGF0ZUFuZExheW91dF0pOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0IGRpZFJv
dGF0ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbToKKyAg
ICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFj
dGlvbnM6c2hvd0xpbmtUaXRsZTpdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCBzaG93SW1hZ2VTaGVldF0pOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHNo
b3dMaW5rU2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93RGF0
YURldGVjdG9yc1NoZWV0XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgY2xl
YW51cFNoZWV0XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWN0aW9uU2hl
ZXQ6Y2xpY2tlZEJ1dHRvbkF0SW5kZXg6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX2xvbmdQcmVzc1JlY29nbml6ZWQ6XSk6CisKIDIwMTQtMDYtMDYgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTcwOTU2OTI+IFtp
T1NdIENsaWVudC1jZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbiBpc27igJl0IHdvcmtpbmcKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxl
bWVudEFjdGlvbi5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CiAKIHR5
cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlvbkhhbmRsZXIpKF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvICopOwordHlwZWRlZiBCT09MICheV0tFbGVtZW50QWN0aW9uRGlzbWlzc2FsSGFuZGxlciko
dm9pZCk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0VsZW1lbnRBY3Rpb25UeXBl
KSB7CiAgICAgX1dLRWxlbWVudEFjdGlvblR5cGVDdXN0b20sCkBAIC01MSw2ICs1Miw3IEBAIFdL
X0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIF9XS0VsZW1lbnRBY3Rpb25UeXBlIHR5cGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TU3RyaW5nKiB0aXRsZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBX
S0VsZW1lbnRBY3Rpb25EaXNtaXNzYWxIYW5kbGVyIGRpc21pc3NhbEhhbmRsZXI7CiAKIEBlbmQK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRWxlbWVudEFjdGlvbi5tbQkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw3IEBAIHR5cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnQK
IEBpbXBsZW1lbnRhdGlvbiBfV0tFbGVtZW50QWN0aW9uICB7CiAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBfdGl0bGU7CiAgICAgV0tFbGVtZW50QWN0aW9uSGFuZGxlckludGVybmFsIF9hY3Rpb25I
YW5kbGVyOworICAgIFdLRWxlbWVudEFjdGlvbkRpc21pc3NhbEhhbmRsZXIgX2Rpc21pc3NhbEhh
bmRsZXI7CiB9CiAKIC0gKGlkKV9pbml0V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlv
bkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCloYW5kbGVyIHR5cGU6KF9X
S0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tBY3Rpb25TaGVldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tBY3Rpb25TaGVldC5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMg
KzI1LDEzIEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKLSNpbXBvcnQgPFVJS2l0L1VJQWN0aW9u
U2hlZXQuaD4KKyNpbXBvcnQgPFVJS2l0L1VJQWxlcnRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxV
SUtpdC9VSVBvcG92ZXJDb250cm9sbGVyLmg+CiAKIEBwcm90b2NvbCBXS0FjdGlvblNoZWV0RGVs
ZWdhdGU7CiBAY2xhc3MgV0tDb250ZW50VmlldzsKIAotQGludGVyZmFjZSBXS0FjdGlvblNoZWV0
IDogVUlBY3Rpb25TaGVldAorQGludGVyZmFjZSBXS0FjdGlvblNoZWV0IDogVUlBbGVydENvbnRy
b2xsZXIKIAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPFdLQWN0aW9uU2hlZXRE
ZWxlZ2F0ZT4gc2hlZXREZWxlZ2F0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBVSVBvcG92ZXJB
cnJvd0RpcmVjdGlvbiBhcnJvd0RpcmVjdGlvbnM7CkBAIC00Miw3ICs0Miw3IEBACiAtICh2b2lk
KXVwZGF0ZVNoZWV0UG9zaXRpb247CiBAZW5kCiAKLUBwcm90b2NvbCBXS0FjdGlvblNoZWV0RGVs
ZWdhdGU8VUlBY3Rpb25TaGVldERlbGVnYXRlPgorQHByb3RvY29sIFdLQWN0aW9uU2hlZXREZWxl
Z2F0ZQogQHJlcXVpcmVkCiAtIChVSVZpZXcgKilob3N0Vmlld0ZvclNoZWV0OwogLSAoQ0dSZWN0
KWluaXRpYWxQcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0OwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldC5tbQkocmV2aXNpb24gMTY5
NTg5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1w
b3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgPFVJS2l0L1VJQWN0aW9u
U2hlZXRfUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlBbGVydENvbnRyb2xsZXJfUHJpdmF0
ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlXaW5kb3dfUHJpdmF0ZS5oPgogCiBAaW1wbGVtZW50YXRp
b24gV0tBY3Rpb25TaGVldCB7CkBAIC0zOCw2ICszOCwxMCBAQAogICAgIFdLQ29udGVudFZpZXcg
Kl92aWV3OwogICAgIFVJUG9wb3ZlckFycm93RGlyZWN0aW9uIF9hcnJvd0RpcmVjdGlvbnM7CiAg
ICAgQk9PTCBfaXNSb3RhdGluZzsKKyAgICBCT09MIF9yZWFkeVRvUHJlc2VudEFmdGVyUm90YXRp
b247CisKKyAgICBSZXRhaW5QdHI8VUlWaWV3Q29udHJvbGxlcj4gX3ByZXNlbnRlZFZpZXdDb250
cm9sbGVyV2hpbGVSb3RhdGluZzsKKyAgICBSZXRhaW5QdHI8aWQgPFVJUG9wb3ZlclByZXNlbnRh
dGlvbkNvbnRyb2xsZXJEZWxlZ2F0ZT4+IF9wb3BvdmVyUHJlc2VudGF0aW9uQ29udHJvbGxlckRl
bGVnYXRlV2hpbGVSb3RhdGluZzsKIH0KIAogLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRW
aWV3ICopdmlldwpAQCAtODgsNzQgKzkyLDE0MiBAQCAtIChCT09MKXByZXNlbnRTaGVldEZyb21S
ZWN0OihDR1JlY3QpcHJlCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gTk87CiAKLSAg
ICBpZiAoVUlfVVNFUl9JTlRFUkZBQ0VfSURJT00oKSAhPSBVSVVzZXJJbnRlcmZhY2VJZGlvbVBo
b25lKSB7Ci0gICAgICAgIFtzZWxmIHByZXNlbnRGcm9tUmVjdDpwcmVzZW50YXRpb25SZWN0Ci0g
ICAgICAgICAgICAgICAgICAgICAgIGluVmlldzp2aWV3Ci0gICAgICAgICAgICAgICAgICAgIGRp
cmVjdGlvbjpfYXJyb3dEaXJlY3Rpb25zCi0gICAgYWxsb3dJbnRlcmFjdGlvbldpdGhWaWV3czpu
aWwKLSAgICAgICAgICAgICAgYmFja2dyb3VuZFN0eWxlOlVJUG9wb3ZlckJhY2tncm91bmRTdHls
ZURlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGVkOllFU107Ci0gICAgfSBlbHNl
Ci0gICAgICAgIFtzZWxmIHNob3dJblZpZXc6dmlld107IAorICAgIFVJVmlld0NvbnRyb2xsZXIg
KnByZXNlbnRlZFZpZXdDb250cm9sbGVyID0gKF9wcmVzZW50ZWRWaWV3Q29udHJvbGxlcldoaWxl
Um90YXRpbmcuZ2V0KCkpID8gX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZy5n
ZXQoKSA6IHNlbGY7CisgICAgcHJlc2VudGVkVmlld0NvbnRyb2xsZXIubW9kYWxQcmVzZW50YXRp
b25TdHlsZSA9IFVJTW9kYWxQcmVzZW50YXRpb25Qb3BvdmVyOworCisgICAgVUlQb3BvdmVyUHJl
c2VudGF0aW9uQ29udHJvbGxlciAqcHJlc2VudGF0aW9uQ29udHJvbGxlciA9IHByZXNlbnRlZFZp
ZXdDb250cm9sbGVyLnBvcG92ZXJQcmVzZW50YXRpb25Db250cm9sbGVyOworICAgIHByZXNlbnRh
dGlvbkNvbnRyb2xsZXIuc291cmNlVmlldyA9IHZpZXc7CisgICAgcHJlc2VudGF0aW9uQ29udHJv
bGxlci5zb3VyY2VSZWN0ID0gcHJlc2VudGF0aW9uUmVjdDsKKyAgICBwcmVzZW50YXRpb25Db250
cm9sbGVyLnBlcm1pdHRlZEFycm93RGlyZWN0aW9ucyA9IF9hcnJvd0RpcmVjdGlvbnM7CisKKyAg
ICBpZiAoX3BvcG92ZXJQcmVzZW50YXRpb25Db250cm9sbGVyRGVsZWdhdGVXaGlsZVJvdGF0aW5n
KQorICAgICAgICBwcmVzZW50YXRpb25Db250cm9sbGVyLmRlbGVnYXRlID0gX3BvcG92ZXJQcmVz
ZW50YXRpb25Db250cm9sbGVyRGVsZWdhdGVXaGlsZVJvdGF0aW5nLmdldCgpOworCisgICAgVUlW
aWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gW3ZpZXcud2luZG93IHJv
b3RWaWV3Q29udHJvbGxlcl07CisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50
Vmlld0NvbnRyb2xsZXI6cHJlc2VudGVkVmlld0NvbnRyb2xsZXIgYW5pbWF0ZWQ6WUVTIGNvbXBs
ZXRpb246TlVMTF07CiAKICAgICByZXR1cm4gWUVTOwogfQogCiAtICh2b2lkKWRvbmVXaXRoU2hl
ZXQKIHsKLSAgICBfZGVsZWdhdGVXaGlsZVJvdGF0aW5nID0gbmlsOworICAgIF9wcmVzZW50ZWRW
aWV3Q29udHJvbGxlcldoaWxlUm90YXRpbmcgPSBuaWw7CisgICAgX3BvcG92ZXJQcmVzZW50YXRp
b25Db250cm9sbGVyRGVsZWdhdGVXaGlsZVJvdGF0aW5nID0gbmlsOwogCi0gICAgW05TT2JqZWN0
IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3RvcihkaWRSb3RhdGUpIG9iamVjdDpuaWxdOworICAgIFtOU09iamVjdCBjYW5jZWxQcmV2
aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhUYXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2Rp
ZFJvdGF0ZUFuZExheW91dCkgb2JqZWN0Om5pbF07CiB9CiAKICNwcmFnbWEgbWFyayAtIFJvdGF0
aW9uIGhhbmRsaW5nIGNvZGUKIAogLSAodm9pZCl3aWxsUm90YXRlCiB7Ci0gICAgQVNTRVJUKFVJ
X1VTRVJfSU5URVJGQUNFX0lESU9NKCkgIT0gVUlVc2VySW50ZXJmYWNlSWRpb21QaG9uZSk7Cisg
ICAgLy8gV2Ugd2FudCB0byBzYXZlIHRoZSB2aWV3IGNvbnRyb2xsZXIgdGhhdCBpcyBjdXJyZW50
bHkgYmVpbmcgcHJlc2VudGVkIHRvIHJlLXByZXNlbnQgaXQgYWZ0ZXIgcm90YXRpb24uCisgICAg
Ly8gSGVyZSBhcmUgdGhlIHZhcmlvdXMgcG9zc2libGUgc3RhdGVzIHRoYXQgd2UgaGF2ZSB0byBo
YW5kbGU6CisgICAgLy8gYSkgdG9wVmlld0NvbnRyb2xsZXIgcHJlc2VudGluZyBvdXJzZWx2ZXMg
KGFsZXJ0Vmlld0NvbnRyb2xsZXIpIC0+IG5vbWluYWwgY2FzZS4KKyAgICAvLyAgICBUaGVyZSBp
cyBubyBuZWVkIHRvIHNhdmUgdGhlIHByZXNlbnRlZCB2aWV3IGNvbnRyb2xsZXIsIHdoaWNoIGlz
IHNlbGYuCisgICAgLy8gYikgdG9wVmlld0NvbnRyb2xsZXIgcHJlc2VudGluZyBvdXJzZWx2ZXMg
cHJlc2VudGluZyBhIGNvbnRlbnQgdmlldyBjb250cm9sbGVyIC0+CisgICAgLy8gICAgVGhpcyBo
YXBwZW5zIGlmIG9uZSBvZiB0aGUgYWN0aW9ucyBpbiB0aGUgYWN0aW9uIHNoZWV0IHByZXNlbnRl
ZCBhIGRpZmZlcmVudCB2aWV3IGNvbnRyb2xsZXIgaW5zaWRlIHRoZSBwb3BvdmVyLAorICAgIC8v
ICAgIHVzaW5nIGEgY3VycmVudCBjb250ZXh0IHByZXNlbnRhdGlvbi4gVGhpcyBpcyBmb3IgZXhh
bXBsZSB0aGUgY2FzZSB3aXRoIHRoZSBEYXRhIERldGVjdG9ycyBhY3Rpb24gIkFkZCB0byBDb250
YWN0cyIuCisgICAgLy8gYykgdG9wVmlld0NvbnRyb2xsZXIgcHJlc2VudGluZyB0aGF0IGNvbnRl
bnQgdmlldyBjb250cm9sbGVyIGRpcmVjdGx5LgorICAgIC8vICAgIFRoaXMgaGFwcGVucyBpZiB3
ZSB3ZXJlIGluIHRoZSAoYikgY2FzZSBhbmQgdGhlbiByb3RhdGVkIHRoZSBkZXZpY2UuIFNpbmNl
IHdlIGRpc21pc3MgdGhlIHBvcG92ZXIgZHVyaW5nIHRoZQorICAgIC8vICAgIHJvdGF0aW9uLCB3
ZSB0YWtlIHRoaXMgb3Bwb3J0dW5pdHkgdG8gc2ltcGxpZnkgdGhlIHZpZXcgY29udHJvbGxlciBo
aWVyYXJjaHkgYW5kIHNpbXBseSByZS1wcmVzZW50IHRoZSBjb250ZW50CisgICAgLy8gICAgdmll
dyBjb250cm9sbGVyLCB3aXRob3V0IHJlLXByZXNlbnRpbmcgdGhlIGFsZXJ0IGNvbnRyb2xsZXIu
CisKKyAgICBVSVZpZXcgKnZpZXcgPSBbX3NoZWV0RGVsZWdhdGUgaG9zdFZpZXdGb3JTaGVldF07
CisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0gdmlldy53
aW5kb3cucm9vdFZpZXdDb250cm9sbGVyOworCisgICAgLy8gdG9wUHJlc2VudGVkVmlld0NvbnRy
b2xsZXIgaXMgZWl0aGVyIHNlbGYgKGNhc2VzIChhKSBhbmQgKGIpIGFib3ZlKSBvciBhbiBhY3Rp
b24ncyB2aWV3IGNvbnRyb2xsZXIKKyAgICAvLyAoY2FzZSAoYykgYWJvdmUpLgorICAgIFVJVmll
d0NvbnRyb2xsZXIgKnRvcFByZXNlbnRlZFZpZXdDb250cm9sbGVyID0gW3ByZXNlbnRpbmdWaWV3
Q29udHJvbGxlciBwcmVzZW50ZWRWaWV3Q29udHJvbGxlcl07CisKKworICAgIC8vIFdlIG9ubHkg
aGF2ZSBzb21ldGhpbmcgdG8gZG8gaWYgd2UncmUgc2hvd2luZyBhIHBvcG92ZXIgKHRoYXQgd2Ug
aGF2ZSB0byByZXBvc2l0aW9uKS4KKyAgICAvLyBPdGhlcndpc2UgdGhlIGRlZmF1bHQgVUlBbGVy
dENvbnRyb2xsZXIgYmVoYXZpb3VyIGlzIGVub3VnaC4KKyAgICBpZiAoW3RvcFByZXNlbnRlZFZp
ZXdDb250cm9sbGVyIHByZXNlbnRhdGlvbkNvbnRyb2xsZXJdLnByZXNlbnRhdGlvblN0eWxlICE9
IFVJTW9kYWxQcmVzZW50YXRpb25Qb3BvdmVyKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
X2lzUm90YXRpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENsZWFyIHRoZSBkZWxlZ2F0
ZSBzbyB0aGF0IHRoZSBtZXRob2Q6Ci0gICAgLy8gLSAodm9pZClhY3Rpb25TaGVldDooVUlBY3Rp
b25TaGVldCAqKWFjdGlvblNoZWV0IGRpZERpc21pc3NXaXRoQnV0dG9uSW5kZXg6KE5TSW50ZWdl
cilidXR0b25JbmRleAotICAgIC8vIGlzIG5vdCBjYWxsZWQgd2hlbiB0aGUgQWN0aW9uU2hlZXQg
aXMgZGlzbWlzc2VkIGJlbG93LiBEZWxlZ2F0ZSBpcyByZS1pbnN0YXRlZCBhZnRlciByb3RhdGlv
bi4KLSAgICBfZGVsZWdhdGVXaGlsZVJvdGF0aW5nID0gW3NlbGYgZGVsZWdhdGVdOwotICAgIHNl
bGYuZGVsZWdhdGUgPSBuaWw7CiAgICAgX2lzUm90YXRpbmcgPSBZRVM7CisgICAgX3JlYWR5VG9Q
cmVzZW50QWZ0ZXJSb3RhdGlvbiA9IE5POworCisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2Vu
dGVkVmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgaWYgKFtzZWxmIHByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcl0gIT0gbmlsKSB7CisgICAgICAgIC8vIEhhbmRsZSBjYXNlcyAoYSkgYW5kIChiKSBh
Ym92ZSAod2UgKFVJQWxlcnRDb250cm9sbGVyKSBhcmUgc3RpbGwgaW4gdGhlIHByZXNlbnRhdGlv
biBoaWVyYXJjaHkpLgorICAgICAgICAvLyBTYXZlIHRoZSB2aWV3IGNvbnRyb2xsZXIgcHJlc2Vu
dGVkIGJ5IG9uZSBvZiB0aGUgYWN0aW9ucyBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgIC8vIChJ
biB0aGUgKGEpIGNhc2UsIHByZXNlbnRlZFZpZXdDb250cm9sbGVyIHdpbGwgYmUgbmlsKS4KKwor
ICAgICAgICBwcmVzZW50ZWRWaWV3Q29udHJvbGxlciA9IFtzZWxmIHByZXNlbnRlZFZpZXdDb250
cm9sbGVyXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBIYW5kbGUgY2FzZSAoYykgYWJvdmUu
CisgICAgICAgIC8vIFRoZSB2aWV3IGNvbnRyb2xsZXIgdGhhdCB3ZSB3YW50IHRvIHNhdmUgaXMg
dGhlIHRvcCBwcmVzZW50ZWQgdmlldyBjb250cm9sbGVyLCBzaW5jZSB3ZQorICAgICAgICAvLyBh
cmUgbm90IHByZXNlbnRpbmcgaXQgYW55bW9yZS4KKworICAgICAgICBwcmVzZW50ZWRWaWV3Q29u
dHJvbGxlciA9IHRvcFByZXNlbnRlZFZpZXdDb250cm9sbGVyOworICAgIH0KKworICAgIF9wcmVz
ZW50ZWRWaWV3Q29udHJvbGxlcldoaWxlUm90YXRpbmcgPSBwcmVzZW50ZWRWaWV3Q29udHJvbGxl
cjsKIAotICAgIFtzZWxmIGRpc21pc3NXaXRoQ2xpY2tlZEJ1dHRvbkluZGV4OltzZWxmIGNhbmNl
bEJ1dHRvbkluZGV4XSBhbmltYXRlZDpOT107CisgICAgLy8gU2F2ZSB0aGUgcG9wb3ZlciBwcmVz
ZW50YXRpb24gY29udHJvbGxlcidzIGRlbGVnYXRlLCBiZWNhdXNlIGluIGNhc2UgKGIpIHdlJ3Jl
IGdvaW5nIHRvIHVzZQorICAgIC8vIGEgZGlmZmVyZW50IHBvcG92ZXJQcmVzZW50YXRpb25Db250
cm9sbGVyIGFmdGVyIHJvdGF0aW9uIHRvIHJlLXByZXNlbnQgdGhlIGFjdGlvbiB2aWV3IGNvbnRy
b2xsZXIsCisgICAgLy8gYW5kIHRoYXQgYWN0aW9uIGlzIHN0aWxsIGV4cGVjdGluZyBkZWxlZ2F0
ZSBjYWxsYmFja3Mgd2hlbiB0aGUgcG9wb3ZlciBpcyBkaXNtaXNzZWQuCisgICAgX3BvcG92ZXJQ
cmVzZW50YXRpb25Db250cm9sbGVyRGVsZWdhdGVXaGlsZVJvdGF0aW5nID0gW3RvcFByZXNlbnRl
ZFZpZXdDb250cm9sbGVyIHBvcG92ZXJQcmVzZW50YXRpb25Db250cm9sbGVyXS5kZWxlZ2F0ZTsK
KworICAgIFtwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5p
bWF0ZWQ6Tk8gY29tcGxldGlvbjpeeworICAgICAgICBbc2VsZiB1cGRhdGVTaGVldFBvc2l0aW9u
XTsKKyAgICB9XTsKIH0KIAogLSAodm9pZCl1cGRhdGVTaGVldFBvc2l0aW9uCiB7Ci0gICAgQVNT
RVJUKFVJX1VTRVJfSU5URVJGQUNFX0lESU9NKCkgIT0gVUlVc2VySW50ZXJmYWNlSWRpb21QaG9u
ZSk7CisgICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGVkVmlld0NvbnRyb2xsZXIgPSAoX3By
ZXNlbnRlZFZpZXdDb250cm9sbGVyV2hpbGVSb3RhdGluZy5nZXQoKSkgPyBfcHJlc2VudGVkVmll
d0NvbnRyb2xsZXJXaGlsZVJvdGF0aW5nLmdldCgpIDogc2VsZjsKKworICAgIC8vIFRoZXJlIGFy
ZSB0d28gYXN5bmNocm9ub3VzIGV2ZW50cyB3aGljaCBtaWdodCB0cmlnZ2VyIHRoaXMgY2FsbCwg
YW5kIHdlIGhhdmUgdG8gd2FpdCBmb3IgYm90aCBvZiB0aGVtIGJlZm9yZSBkb2luZyBzb21ldGhp
bmcuCisgICAgLy8gLSBPbmUgcnVubG9vcCBpdGVyYXRpb24gYWZ0ZXIgcm90YXRpb24gKHRvIGxl
dCB0aGUgV2ViIGNvbnRlbnQgcmUtbGF5b3V0LCBzZWUgYmVsb3cpCisgICAgLy8gLSBUaGUgY29t
cGxldGlvbiBvZiB0aGUgdmlldyBjb250cm9sbGVyIGRpc21pc3NhbCBpbiB3aWxsUm90YXRlLgor
ICAgIC8vIChXZSBjYW5ub3QgcHJlc2VudCBzb21ldGhpbmcgYWdhaW4gdW50aWwgdGhlIGRpc21p
c3NhbCBpcyBkb25lKQorCisgICAgQk9PTCBpc0JlaW5nUHJlc2VudGVkID0gW3ByZXNlbnRlZFZp
ZXdDb250cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gfHwgW3NlbGYgcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyXTsKIAotICAgIGlmICghX2lzUm90YXRpbmcpCisgICAgaWYgKCFfaXNS
b3RhdGluZyB8fCAhX3JlYWR5VG9QcmVzZW50QWZ0ZXJSb3RhdGlvbiB8fCBpc0JlaW5nUHJlc2Vu
dGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBfaXNSb3RhdGluZyA9IE5POwotICAgIAotICAg
IENHUmVjdCBwcmVzZW50YXRpb25SZWN0ID0gW19zaGVldERlbGVnYXRlIHByZXNlbnRhdGlvblJl
Y3RJbkhvc3RWaWV3Rm9yU2hlZXRdOwotICAgIGlmICghQ0dSZWN0SXNFbXB0eShwcmVzZW50YXRp
b25SZWN0KSkgewotICAgICAgICAvLyBSZS1wcmVzZW50IHRoZSBwb3BvdmVyIG9ubHkgaWYgd2Ug
YXJlIHN0aWxsIHBvaW50aW5nIHRvIGNvbnRlbnQgb25zY3JlZW4uCisKKyAgICBDR1JlY3QgcHJl
c2VudGF0aW9uUmVjdCA9IFtfc2hlZXREZWxlZ2F0ZSBpbml0aWFsUHJlc2VudGF0aW9uUmVjdElu
SG9zdFZpZXdGb3JTaGVldF07CisgICAgQk9PTCB3YXNQcmVzZW50ZWRWaWV3Q29udHJvbGxlck1v
ZGFsID0gW19wcmVzZW50ZWRWaWV3Q29udHJvbGxlcldoaWxlUm90YXRpbmcgaXNNb2RhbEluUG9w
b3Zlcl07CisKKyAgICBpZiAoIUNHUmVjdElzRW1wdHkocHJlc2VudGF0aW9uUmVjdCkgfHwgd2Fz
UHJlc2VudGVkVmlld0NvbnRyb2xsZXJNb2RhbCkgeworICAgICAgICAvLyBSZS1wcmVzZW50IHRo
ZSBwb3BvdmVyIG9ubHkgaWYgd2UgYXJlIHN0aWxsIHBvaW50aW5nIHRvIGNvbnRlbnQgb25zY3Jl
ZW4sIG9yIGlmIHdlIGNhbid0IGRpc21pc3MgaXQgd2l0aG91dCBsb3NpbmcgaW5mb3JtYXRpb24u
CisgICAgICAgIC8vIChpZiB0aGUgdmlldyBjb250cm9sbGVyIGlzIG1vZGFsKQorCiAgICAgICAg
IENHUmVjdCBpbnRlcnNlY3Rpb24gPSBDR1JlY3RJbnRlcnNlY3Rpb24oW1tfc2hlZXREZWxlZ2F0
ZSBob3N0Vmlld0ZvclNoZWV0XSBib3VuZHNdLCBwcmVzZW50YXRpb25SZWN0KTsKLSAgICAgICAg
aWYgKCFDR1JlY3RJc0VtcHR5KGludGVyc2VjdGlvbikpIHsKLSAgICAgICAgICAgIHNlbGYuZGVs
ZWdhdGUgPSBfZGVsZWdhdGVXaGlsZVJvdGF0aW5nOworICAgICAgICBpZiAoIUNHUmVjdElzRW1w
dHkoaW50ZXJzZWN0aW9uKSkKICAgICAgICAgICAgIFtzZWxmIHByZXNlbnRTaGVldEZyb21SZWN0
OmludGVyc2VjdGlvbl07Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAod2FzUHJlc2VudGVkVmlld0NvbnRyb2xsZXJNb2RhbCkKKyAgICAgICAgICAgIFtz
ZWxmIHByZXNlbnRTaGVldF07CisKKyAgICAgICAgX3ByZXNlbnRlZFZpZXdDb250cm9sbGVyV2hp
bGVSb3RhdGluZyA9IG5pbDsKKyAgICAgICAgX3BvcG92ZXJQcmVzZW50YXRpb25Db250cm9sbGVy
RGVsZWdhdGVXaGlsZVJvdGF0aW5nID0gbmlsOwogICAgIH0KLSAgICAKLSAgICAvLyBDYW5jZWwg
dGhlIHNoZWV0IGFzIHRoZXJlIGlzIGVpdGhlciBubyB2aWV3IG9yIHRoZSBjb250ZW50IGhhcyBu
b3cgbW92ZWQgb2ZmIHNjcmVlbi4KLSAgICBbX2RlbGVnYXRlV2hpbGVSb3RhdGluZyBhY3Rpb25T
aGVldDpzZWxmIGNsaWNrZWRCdXR0b25BdEluZGV4OltzZWxmIGNhbmNlbEJ1dHRvbkluZGV4XV07
Cit9CisKKy0gKHZvaWQpX2RpZFJvdGF0ZUFuZExheW91dAoreworICAgIF9yZWFkeVRvUHJlc2Vu
dEFmdGVyUm90YXRpb24gPSBZRVM7CisgICAgW192aWV3IF91cGRhdGVQb3NpdGlvbkluZm9ybWF0
aW9uXTsKKyAgICBbc2VsZiB1cGRhdGVTaGVldFBvc2l0aW9uXTsKIH0KIAogLSAodm9pZClkaWRS
b3RhdGUKIHsKLSAgICBBU1NFUlQoVUlfVVNFUl9JTlRFUkZBQ0VfSURJT00oKSAhPSBVSVVzZXJJ
bnRlcmZhY2VJZGlvbVBob25lKTsKKyAgICAvLyBIYW5kbGUgdGhlIHJvdGF0aW9uIG9uIHRoZSBu
ZXh0IHJ1biBsb29wIGludGVyYXRpb24gYXMgdGhpcworICAgIC8vIGFsbG93cyB0aGUgb25Pcmll
bnRhdGlvbkNoYW5nZSBldmVudCB0byBmaXJlLCBhbmQgdGhlIGVsZW1lbnQgbm9kZSBtYXkKKyAg
ICAvLyBiZSByZW1vdmVkLgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS85MzYwOTI5PiBTaG91bGQg
cmUtcHJlc2VudCBwb3BvdmVyIGFmdGVyIGxheW91dCByYXRoZXIgdGhhbiBvbiB0aGUgbmV4dCBy
dW5sb29wCiAKLSAgICBbX3ZpZXcgX3VwZGF0ZVBvc2l0aW9uSW5mb3JtYXRpb25dOworICAgIFtz
ZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2RpZFJvdGF0ZUFuZExheW91dCkgd2l0aE9i
amVjdDpuaWwgYWZ0ZXJEZWxheTowXTsKIH0KIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgJKHJldmlz
aW9uIDE2OTU4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbXBvcnQg
IldLQWN0aW9uU2hlZXQuaCIKIAotI2ltcG9ydCA8VUlLaXQvVUlBY3Rpb25TaGVldC5oPgorI2lt
cG9ydCA8RGF0YURldGVjdG9yc1VJL0RERGV0ZWN0aW9uQ29udHJvbGxlci5oPgogI2ltcG9ydCA8
VUlLaXQvVUlQb3BvdmVyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRGVjbGFyYXRp
b25TcGVjaWZpZXJzLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwogfQogCi1AaW50ZXJm
YWNlIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgOiBOU09iamVjdCA8V0tBY3Rpb25TaGVldERlbGVn
YXRlPgorQGludGVyZmFjZSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IDogTlNPYmplY3QgPFdLQWN0
aW9uU2hlZXREZWxlZ2F0ZSwgREREZXRlY3Rpb25Db250cm9sbGVySW50ZXJhY3Rpb25EZWxlZ2F0
ZT4KIAogLSAoaWQpaW5pdFdpdGhWaWV3OihXS0NvbnRlbnRWaWV3ICopdmlldzsKIC0gKHZvaWQp
c2hvd0xpbmtTaGVldDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rp
b25TaGVldEFzc2lzdGFudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHJldmlzaW9uIDE2OTU4OSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDExIEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9X
S0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8RGF0YURldGVjdG9yc1VJL0REQWN0
aW9uLmg+CiAjaW1wb3J0IDxEYXRhRGV0ZWN0b3JzVUkvREREZXRlY3Rpb25Db250cm9sbGVyLmg+
CiAjaW1wb3J0IDxTYWZhcmlTZXJ2aWNlcy9TU1JlYWRpbmdMaXN0Lmg+CiAjaW1wb3J0IDxUQ0Mv
VENDLmg+Ci0jaW1wb3J0IDxVSUtpdC9VSUFjdGlvblNoZWV0X1ByaXZhdGUuaD4KKyNpbXBvcnQg
PFVJS2l0L1VJQWxlcnRDb250cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmll
dy5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSVdpbmRvd19Qcml2YXRlLmg+CkBAIC02Niw3ICs2Nyw2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiBAaW1wbGVtZW50YXRpb24gV0tBY3Rpb25TaGVldEFzc2lzdGFudCB7CiAg
ICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXQ+IF9pbnRlcmFjdGlvblNoZWV0OwogICAgIFJldGFp
blB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gX2VsZW1lbnRJbmZvOwotICAgIFJldGFpblB0
cjxOU0FycmF5PiBfZWxlbWVudEFjdGlvbnM7CiAgICAgV0tDb250ZW50VmlldyAqX3ZpZXc7CiB9
CiAKQEAgLTE1OSwxOCArMTU5LDYgQEAgLSAoQk9PTClwcmVzZW50U2hlZXQKICAgICByZXR1cm4g
W19pbnRlcmFjdGlvblNoZWV0IHByZXNlbnRTaGVldEZyb21SZWN0OnByZXNlbnRhdGlvblJlY3Rd
OwogfQogCi0tICh2b2lkKWFjdGlvblNoZWV0OihVSUFjdGlvblNoZWV0ICopYWN0aW9uU2hlZXQg
Y2xpY2tlZEJ1dHRvbkF0SW5kZXg6KE5TSW50ZWdlcilidXR0b25JbmRleAotewotICAgIEFTU0VS
VChhY3Rpb25TaGVldCA9PSBfaW50ZXJhY3Rpb25TaGVldCk7Ci0gICAgaWYgKGFjdGlvblNoZWV0
ICE9IF9pbnRlcmFjdGlvblNoZWV0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoX2VsZW1l
bnRBY3Rpb25zICYmIGJ1dHRvbkluZGV4IDwgKE5TSW50ZWdlcilbX2VsZW1lbnRBY3Rpb25zIGNv
dW50XSkKLSAgICAgICAgW1tfZWxlbWVudEFjdGlvbnMgb2JqZWN0QXRJbmRleDpidXR0b25JbmRl
eF0gX3J1bkFjdGlvbldpdGhFbGVtZW50SW5mbzpfZWxlbWVudEluZm8uZ2V0KCkgdmlldzpfdmll
d107Ci0KLSAgICBbc2VsZiBjbGVhbnVwU2hlZXRdOwotfQotCiAtICh2b2lkKXVwZGF0ZVNoZWV0
UG9zaXRpb24KIHsKICAgICBbX2ludGVyYWN0aW9uU2hlZXQgdXBkYXRlU2hlZXRQb3NpdGlvbl07
CkBAIC0xODcsOCArMTc1LDcgQEAgLSAodm9pZClfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFjdGlv
bnM6KAogCiAgICAgX2ludGVyYWN0aW9uU2hlZXQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldCBh
bGxvY10gaW5pdFdpdGhWaWV3Ol92aWV3XSk7CiAgICAgX2ludGVyYWN0aW9uU2hlZXQuZ2V0KCku
c2hlZXREZWxlZ2F0ZSA9IHNlbGY7Ci0gICAgX2ludGVyYWN0aW9uU2hlZXQuZ2V0KCkuYWN0aW9u
U2hlZXRTdHlsZSA9IFVJQWN0aW9uU2hlZXRTdHlsZUF1dG9tYXRpYzsKLSAgICBfaW50ZXJhY3Rp
b25TaGVldC5nZXQoKS5kZWxlZ2F0ZSA9IHNlbGY7CisgICAgX2ludGVyYWN0aW9uU2hlZXQuZ2V0
KCkucHJlZmVycmVkU3R5bGUgPSBVSUFsZXJ0Q29udHJvbGxlclN0eWxlQWN0aW9uU2hlZXQ7CiAK
ICAgICBOU1N0cmluZyAqdGl0bGVTdHJpbmcgPSBuaWw7CiAgICAgQk9PTCB0aXRsZUlzVVJMID0g
Tk87CkBAIC0yMDQsMTggKzE5MSwyNSBAQCAtICh2b2lkKV9jcmVhdGVTaGVldFdpdGhFbGVtZW50
QWN0aW9uczooCiAKICAgICBpZiAoW3RpdGxlU3RyaW5nIGxlbmd0aF0pIHsKICAgICAgICAgW19p
bnRlcmFjdGlvblNoZWV0IHNldFRpdGxlOnRpdGxlU3RyaW5nXTsKLSAgICAgICAgaWYgKHRpdGxl
SXNVUkwpIHsKLSAgICAgICAgICAgIFtbX2ludGVyYWN0aW9uU2hlZXQgX3RpdGxlTGFiZWxdIHNl
dExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVRydW5jYXRpbmdNaWRkbGVdOwotICAgICAgICAg
ICAgW19pbnRlcmFjdGlvblNoZWV0IHNldFRpdGxlTWF4TGluZUNvdW50OjJdOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIFtbX2ludGVyYWN0aW9uU2hlZXQgX3RpdGxlTGFiZWxdIHNldExp
bmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsXTsKKyAgICAgICAgLy8gV2Ug
c2hvdWxkIGNvbmZpZ3VyZSB0aGUgdGV4dCBmaWVsZCdzIGxpbmUgYnJlYWtpbmcgbW9kZSBjb3Jy
ZWN0bHkgaGVyZSwgYmFzZWQgb24gd2hldGhlcgorICAgICAgICAvLyB0aGUgdGl0bGUgaXMgYW4g
VVJMIG9yIG5vdCwgYnV0IHRoZSBhcHByb3ByaWF0ZSBVSUFsZXJ0Q29udHJvbGxlciBTUElzIGFy
ZSBub3QgYXZhaWxhYmxlIHlldC4KKyAgICAgICAgLy8gVGhlIGNvZGUgdGhhdCB1c2VkIHRvIGRv
IHRoaXMgaW4gdGhlIFVJQWN0aW9uU2hlZXQgd29ybGQgaGFzIGJlZW4gc2F2ZWQgZm9yIHJlZmVy
ZW5jZSBpbgorICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTcwNDk3ODE+IENvbmZpZ3VyZSB0
aGUgVUlBbGVydENvbnRyb2xsZXIncyB0aXRsZSBhcHByb3ByaWF0ZWx5LgogICAgIH0KIAotICAg
IF9lbGVtZW50QWN0aW9ucyA9IGFkb3B0TlMoW2FjdGlvbnMgY29weV0pOwotICAgIGZvciAoX1dL
RWxlbWVudEFjdGlvbiAqYWN0aW9uIGluIF9lbGVtZW50QWN0aW9ucy5nZXQoKSkKLSAgICAgICAg
W19pbnRlcmFjdGlvblNoZWV0IGFkZEJ1dHRvbldpdGhUaXRsZTpbYWN0aW9uIHRpdGxlXV07Ci0K
LSAgICBbX2ludGVyYWN0aW9uU2hlZXQgc2V0Q2FuY2VsQnV0dG9uSW5kZXg6W19pbnRlcmFjdGlv
blNoZWV0IGFkZEJ1dHRvbldpdGhUaXRsZTpXRUJfVUlfU1RSSU5HX0tFWSgiQ2FuY2VsIiwgIkNh
bmNlbCBidXR0b24gbGFiZWwgaW4gYnV0dG9uIGJhciIsICJUaXRsZSBmb3IgQ2FuY2VsIGJ1dHRv
biBsYWJlbCBpbiBidXR0b24gYmFyIildXTsKKyAgICBmb3IgKF9XS0VsZW1lbnRBY3Rpb24gKmFj
dGlvbiBpbiBhY3Rpb25zKQorICAgICAgICBbX2ludGVyYWN0aW9uU2hlZXQgX2FkZEFjdGlvbldp
dGhUaXRsZTpbYWN0aW9uIHRpdGxlXSBzdHlsZTpVSUFsZXJ0QWN0aW9uU3R5bGVEZWZhdWx0IGhh
bmRsZXI6XnsKKyAgICAgICAgICAgIFthY3Rpb24gX3J1bkFjdGlvbldpdGhFbGVtZW50SW5mbzpf
ZWxlbWVudEluZm8uZ2V0KCkgdmlldzpfdmlld107CisgICAgICAgICAgICBbc2VsZiBjbGVhbnVw
U2hlZXRdOworICAgICAgICB9IHNob3VsZERpc21pc3NIYW5kbGVyOl57CisgICAgICAgICAgICBy
ZXR1cm4gKEJPT0wpKCFhY3Rpb24uZGlzbWlzc2FsSGFuZGxlciB8fCBhY3Rpb24uZGlzbWlzc2Fs
SGFuZGxlcigpKTsKKyAgICAgICAgfV07CisKKyAgICBbX2ludGVyYWN0aW9uU2hlZXQgYWRkQWN0
aW9uOltVSUFsZXJ0QWN0aW9uIGFjdGlvbldpdGhUaXRsZTpXRUJfVUlfU1RSSU5HX0tFWSgiQ2Fu
Y2VsIiwgIkNhbmNlbCBidXR0b24gbGFiZWwgaW4gYnV0dG9uIGJhciIsICJUaXRsZSBmb3IgQ2Fu
Y2VsIGJ1dHRvbiBsYWJlbCBpbiBidXR0b24gYmFyIikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTpVSUFsZXJ0QWN0aW9uU3R5
bGVDYW5jZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlcjpeKFVJQWxlcnRBY3Rpb24gKmFjdGlvbikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGYgY2xl
YW51cFNoZWV0XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfV1dOwogICAgIF92aWV3LnBhZ2UtPnN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxl
bWVudEF0UG9zaXRpb24oX3ZpZXcucG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCk7CiB9CiAKQEAg
LTI1Miw3ICsyNDYsNyBAQCAtICh2b2lkKXNob3dJbWFnZVNoZWV0CiAgICAgX2VsZW1lbnRJbmZv
ID0gc3RkOjptb3ZlKGVsZW1lbnRJbmZvKTsKIAogICAgIGlmICghW19pbnRlcmFjdGlvblNoZWV0
IHByZXNlbnRTaGVldF0pCi0gICAgICAgIFtzZWxmIGFjdGlvblNoZWV0Ol9pbnRlcmFjdGlvblNo
ZWV0LmdldCgpIGNsaWNrZWRCdXR0b25BdEluZGV4OltfaW50ZXJhY3Rpb25TaGVldCBjYW5jZWxC
dXR0b25JbmRleF1dOworICAgICAgICBbc2VsZiBjbGVhbnVwU2hlZXRdOwogfQogCiAtICh2b2lk
KXNob3dMaW5rU2hlZXQKQEAgLTI4OCw3ICsyODIsNyBAQCAtICh2b2lkKXNob3dMaW5rU2hlZXQK
ICAgICBfZWxlbWVudEluZm8gPSBzdGQ6Om1vdmUoZWxlbWVudEluZm8pOwogCiAgICAgaWYgKCFb
X2ludGVyYWN0aW9uU2hlZXQgcHJlc2VudFNoZWV0XSkKLSAgICAgICAgW3NlbGYgYWN0aW9uU2hl
ZXQ6X2ludGVyYWN0aW9uU2hlZXQuZ2V0KCkgY2xpY2tlZEJ1dHRvbkF0SW5kZXg6W19pbnRlcmFj
dGlvblNoZWV0IGNhbmNlbEJ1dHRvbkluZGV4XV07CisgICAgICAgIFtzZWxmIGNsZWFudXBTaGVl
dF07CiB9CiAKIC0gKHZvaWQpc2hvd0RhdGFEZXRlY3RvcnNTaGVldApAQCAtMzA4LDMzICszMDIs
MjYgQEAgLSAodm9pZClzaG93RGF0YURldGVjdG9yc1NoZWV0CiAgICAgTlNNdXRhYmxlQXJyYXkg
KmVsZW1lbnRBY3Rpb25zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBmb3IgKE5TVUlu
dGVnZXIgYWN0aW9uTnVtYmVyID0gMDsgYWN0aW9uTnVtYmVyIDwgW2RhdGFEZXRlY3RvcnNBY3Rp
b25zIGNvdW50XTsgYWN0aW9uTnVtYmVyKyspIHsKICAgICAgICAgRERBY3Rpb24gKmFjdGlvbiA9
IFtkYXRhRGV0ZWN0b3JzQWN0aW9ucyBvYmplY3RBdEluZGV4OmFjdGlvbk51bWJlcl07Ci0gICAg
ICAgIFtlbGVtZW50QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFj
dGlvbldpdGhUaXRsZTpbYWN0aW9uIGxvY2FsaXplZE5hbWVdIGFjdGlvbkhhbmRsZXI6XihfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgewotICAgICAgICAgICAgVUlQb3BvdmVy
Q29udHJvbGxlciAqcG9wb3ZlckNvbnRyb2xsZXIgPSBuaWw7Ci0gICAgICAgICAgICBpZiAoVUlf
VVNFUl9JTlRFUkZBQ0VfSURJT00oKSAhPSBVSVVzZXJJbnRlcmZhY2VJZGlvbVBob25lKSB7Ci0g
ICAgICAgICAgICAgICAgW19pbnRlcmFjdGlvblNoZWV0IHNldFVzZXJJbnRlcmFjdGlvbkVuYWJs
ZWQ6Tk9dOwotICAgICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMTAxNTc1MT4gQWN0
aW9uIHNoZWV0IGJlY29tZXMgYmxhY2sgaWYgYSBidXR0b24gaXMgY2xpY2tlZCB0d2ljZSBvbiBp
UGFkCi0gICAgICAgICAgICAgICAgLy8gcHJldmVudCBhbnkgZnVydGhlciB0YXAgb24gdGhlIHNo
ZWV0IHdoaWxlIEREIGlzIGxvYWRpbmcgaXRzIHZpZXcgY29udHJvbGxlciwgb3RoZXJ3aXNlIFVJ
QWN0aW9uU2hlZXQgZ29lcyBhbW9rCi0KLSAgICAgICAgICAgICAgICBwb3BvdmVyQ29udHJvbGxl
ciA9IFtfaW50ZXJhY3Rpb25TaGVldCBfcmVsaW5xdWlzaFBvcG92ZXJDb250cm9sbGVyXTsKLSAg
ICAgICAgICAgIH0KLQorICAgICAgICBfV0tFbGVtZW50QWN0aW9uICplbGVtZW50QWN0aW9uID0g
W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUaXRsZTpbYWN0aW9uIGxvY2FsaXpl
ZE5hbWVdIGFjdGlvbkhhbmRsZXI6XihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5m
bykgewogICAgICAgICAgICAgW1tnZXRERERldGVjdGlvbkNvbnRyb2xsZXJDbGFzcygpIHNoYXJl
ZENvbnRyb2xsZXJdIHBlcmZvcm1BY3Rpb246YWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVmlldzpb
c2VsZiBzdXBlcnZpZXdGb3JTaGVldF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFBvcG92ZXJDb250cm9sbGVyOnBvcG92ZXJDb250
cm9sbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJvbUFsZXJ0Q29udHJvbGxlcjpfaW50ZXJhY3Rpb25TaGVldC5nZXQoKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVyYWN0aW9uRGVsZWdhdGU6c2VsZl07Ci0gICAgICAgIH1dXTsKKyAgICAgICAgfV07CisgICAg
ICAgIGVsZW1lbnRBY3Rpb24uZGlzbWlzc2FsSGFuZGxlciA9IF57CisgICAgICAgICAgICByZXR1
cm4gKEJPT0wpIWFjdGlvbi5oYXNVc2VySW50ZXJmYWNlOworICAgICAgICB9OworICAgICAgICBb
ZWxlbWVudEFjdGlvbnMgYWRkT2JqZWN0OmVsZW1lbnRBY3Rpb25dOwogICAgIH0KIAogICAgIFtz
ZWxmIF9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczplbGVtZW50QWN0aW9ucyBzaG93TGlu
a1RpdGxlOk5PXTsKICAgICBpZiAoIV9pbnRlcmFjdGlvblNoZWV0KQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBUaGUgaW1wbGljaXQgc2Vjb25kIGJ1dHRvbiBpcyAiY2FuY2VsIiwgd2hpY2gg
aXMgc3dhbGxvd2VkIGJ5IHRoZSBwb3BvdmVyIGF0IHByZXNlbnRhdGlvbiB0aW1lLgotICAgIGlm
IChfaW50ZXJhY3Rpb25TaGVldC5nZXQoKS5udW1iZXJPZkJ1dHRvbnMgPD0gMikKKyAgICBpZiAo
ZWxlbWVudEFjdGlvbnMuY291bnQgPD0gMSkKICAgICAgICAgX2ludGVyYWN0aW9uU2hlZXQuZ2V0
KCkuYXJyb3dEaXJlY3Rpb25zID0gVUlQb3BvdmVyQXJyb3dEaXJlY3Rpb25VcCB8IFVJUG9wb3Zl
ckFycm93RGlyZWN0aW9uRG93bjsKIAogICAgIGlmICghW19pbnRlcmFjdGlvblNoZWV0IHByZXNl
bnRTaGVldF0pCi0gICAgICAgIFtzZWxmIGFjdGlvblNoZWV0Ol9pbnRlcmFjdGlvblNoZWV0Lmdl
dCgpIGNsaWNrZWRCdXR0b25BdEluZGV4OltfaW50ZXJhY3Rpb25TaGVldCBjYW5jZWxCdXR0b25J
bmRleF1dOworICAgICAgICBbc2VsZiBjbGVhbnVwU2hlZXRdOwogfQogCiAtICh2b2lkKWNsZWFu
dXBTaGVldApAQCAtMzQzLDExICszMzAsOCBAQCAtICh2b2lkKWNsZWFudXBTaGVldAogCiAgICAg
W19pbnRlcmFjdGlvblNoZWV0IGRvbmVXaXRoU2hlZXRdOwogICAgIFtfaW50ZXJhY3Rpb25TaGVl
dCBzZXRTaGVldERlbGVnYXRlOm5pbF07Ci0gICAgW19pbnRlcmFjdGlvblNoZWV0IHNldERlbGVn
YXRlOm5pbF07CiAgICAgX2ludGVyYWN0aW9uU2hlZXQgPSBuaWw7CiAgICAgX2VsZW1lbnRJbmZv
ID0gbmlsOwotCi0gICAgX2VsZW1lbnRBY3Rpb25zID0gbmlsOwogfQogCiBAZW5kCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1
Nyw4ICs3NTcsMTAgQEAgLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlcwog
CiAgICAgaWYgKFtnZXN0dXJlUmVjb2duaXplciBzdGF0ZV0gPT0gVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlQmVnYW4pIHsKICAgICAgICAgU0VMIGFjdGlvbiA9IFtzZWxmIF9hY3Rpb25Gb3JMb25n
UHJlc3NdOwotICAgICAgICBpZiAoYWN0aW9uKQorICAgICAgICBpZiAoYWN0aW9uKSB7CiAgICAg
ICAgICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6YWN0aW9uXTsKKyAgICAgICAgICAgIFtzZWxm
IF9jYW5jZWxMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcl07CisgICAgICAgIH0KICAgICB9CiB9
CiAK
</data>
<flag name="review"
          id="257127"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>