[Boa Constr] RE: Boa-constructor-users digest, Vol 1 #815 - 2 msgs
Status: Beta
Brought to you by:
riaan
From: Jeff P. <jef...@se...> - 2005-06-03 16:23:45
|
Great that helps! Could you send the code that you rearranged so I can study it? Thanks. Jeff -----Original Message----- From: boa...@li... [mailto:boa...@li...] On Behalf Of boa...@li... Sent: Friday, June 03, 2005 8:05 AM To: boa...@li... Subject: Boa-constructor-users digest, Vol 1 #815 - 2 msgs Send Boa-constructor-users mailing list submissions to boa...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/boa-constructor-users or, via email, send a message with subject or body 'help' to boa...@li... You can reach the person managing the list at boa...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of Boa-constructor-users digest..." Today's Topics: 1. splitter window troubles... (Jeff Peery) 2. Re: splitter window troubles... (Werner F. Bruhin) --__--__-- Message: 1 From: "Jeff Peery" <jef...@se...> To: <boa...@li...> Date: Fri, 3 Jun 2005 07:12:04 -0700 Organization: SeaMetrics Subject: [Boa Constr] splitter window troubles... This is a multi-part message in MIME format. ------=_NextPart_000_0001_01C5680B.8CC35E30 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello, I've been trying to manage a splitter window. I attached my code. The problem is that when I start the program (in python or just in the editor window in boa) the splitter window sash doesn't show. Only until I resize the window does the sash show up. I tried to reset the sash position although it doesn't work. Also when I move the splitter window sash there are funny lines that appear in the two windows that make up the spitter window. Anyone know what the problem is here? I appreciate the help! Thanks. Jeff ------=_NextPart_000_0001_01C5680B.8CC35E30 Content-Type: text/plain; name="SIMPLE.py" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="SIMPLE.py" #SIMPLE created by Jeff Peery May 26th 2005 import wx import ParentFrame modules =3D{'ParentFrame': [1, 'Main frame of Application', = 'ParentFrame.py']} class BoaApp(wx.App): def OnInit(self): wx.InitAllImageHandlers() self.main =3D ParentFrame.create(None) self.main.Show() self.SetTopWindow(self.main) return True def main(): application =3D BoaApp(0) application.MainLoop() if __name__ =3D=3D '__main__': main() ------=_NextPart_000_0001_01C5680B.8CC35E30 Content-Type: text/plain; name="ParentFrame.py" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="ParentFrame.py" #Boa:Frame:SIMPLE import wx import PartListWindow import ControlWindow import PlotWindowCC =20 def create(parent): return SIMPLE(parent) [wxID_SIMPLE, wxID_SIMPLECOMBOBOX1, wxID_SIMPLECOMBOBOX2,=20 wxID_SIMPLECOMBOBOX3, wxID_SIMPLECOMBOBOX4, wxID_SIMPLESASHWINDOW1,=20 wxID_SIMPLESASHWINDOW2, wxID_SIMPLESASHWINDOW3, = wxID_SIMPLESPLITTERWINDOW1,=20 wxID_SIMPLETOOLBAR1,=20 ] =3D [wx.NewId() for _init_ctrls in range(10)] [wxID_SIMPLETOOLBAR1BOXCHARTPLOT, wxID_SIMPLETOOLBAR1CONTROLCHART,=20 wxID_SIMPLETOOLBAR1NORMPROBDENSFUNC, wxID_SIMPLETOOLBAR1TOOLS14,=20 wxID_SIMPLETOOLBAR1TOOLS3, wxID_SIMPLETOOLBAR1TOOLS4,=20 wxID_SIMPLETOOLBAR1TOOLS5, wxID_SIMPLETOOLBAR1TOOLS6,=20 ] =3D [wx.NewId() for _init_coll_toolBar1_Tools in range(8)] [wxID_SIMPLEMENU2EDITPARTLIST, wxID_SIMPLEMENU2SETTINGS,=20 wxID_SIMPLEMENU2UPDATELIMITS,=20 ] =3D [wx.NewId() for _init_coll_Edit_Items in range(3)] [wxID_SIMPLEFILEPRINT, wxID_SIMPLEMENU1ITEMS1, wxID_SIMPLEMENU1ITEMS2,=20 wxID_SIMPLEMENU1ITEMS3, wxID_SIMPLEMENU1ITEMS4, wxID_SIMPLEMENU1ITEMS6, = wxID_SIMPLEMENU1ITEMS7,=20 ] =3D [wx.NewId() for _init_coll_File_Items in range(7)] [wxID_SIMPLEPLOTEXPORT_IMAGE, wxID_SIMPLEPLOTEXPORT_TECPLOT,=20 wxID_SIMPLEPLOTPLOTCONTROLCHART, wxID_SIMPLEPLOTPLOTSETTINGS,=20 ] =3D [wx.NewId() for _init_coll_Plot_Items in range(4)] [wxID_SIMPLEVIEWCLEARCWINDOW, wxID_SIMPLEVIEWCLEARCWINDOW,=20 wxID_SIMPLEVIEWSHOWCWINDOW, wxID_SIMPLEVIEWSHOWGWINDOW,=20 wxID_SIMPLEVIEWSHOWPLWINDOW,=20 ] =3D [wx.NewId() for _init_coll_View_Items in range(5)] class SIMPLE(wx.Frame): def _init_coll_boxSizer4_Items(self, parent): # generated method, don't edit parent.AddWindow(self.splitterWindow1, 1, border=3D0, = flag=3Dwx.EXPAND) def _init_coll_boxSizer1_Items(self, parent): # generated method, don't edit parent.AddWindow(self.toolBar1, 0, border=3D0, flag=3Dwx.TOP | wx.RIGHT | wx.EXPAND | wx.LEFT) parent.AddWindow(self.boxSizer2, 1, border=3D0, flag=3Dwx.TOP | wx.RIGHT | wx.EXPAND | wx.LEFT) def _init_coll_boxSizer2_Items(self, parent): # generated method, don't edit parent.AddWindow(self.sashWindow1, 1, border=3D0, = flag=3Dwx.EXPAND) parent.AddWindow(self.boxSizer4, 1, border=3D0, flag=3Dwx.TOP | wx.RIGHT | wx.EXPAND | wx.LEFT) def _init_coll_View_Items(self, parent): # generated method, don't edit parent.Append(help=3D'', id=3DwxID_SIMPLEVIEWCLEARCWINDOW, kind=3Dwx.ITEM_NORMAL, text=3D'Clear Control Window') parent.Append(help=3D'', id=3DwxID_SIMPLEVIEWSHOWCWINDOW, kind=3Dwx.ITEM_NORMAL, text=3D'Show Control Widow') parent.Append(help=3D'', id=3DwxID_SIMPLEVIEWSHOWGWINDOW, kind=3Dwx.ITEM_NORMAL, text=3D'Show Graphical Window') parent.Append(help=3D'', id=3DwxID_SIMPLEVIEWSHOWPLWINDOW, kind=3Dwx.ITEM_NORMAL, text=3D'Show Part list') parent.Append(help=3D'', id=3DwxID_SIMPLEVIEWCLEARCWINDOW, kind=3Dwx.ITEM_NORMAL, text=3D'Clear Control Window') def _init_coll_menuBar1_Menus(self, parent): # generated method, don't edit parent.Append(menu=3Dself.File, title=3D'File') parent.Append(menu=3Dself.Edit, title=3D'Edit') parent.Append(menu=3Dself.View, title=3D'View') parent.Append(menu=3Dself.Plot, title=3D'Plot') def _init_coll_File_Items(self, parent): # generated method, don't edit parent.Append(help=3D'', id=3DwxID_SIMPLEMENU1ITEMS1, = kind=3Dwx.ITEM_NORMAL, text=3D'Start Monitor') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU1ITEMS2, = kind=3Dwx.ITEM_NORMAL, text=3D'Stop Monitor') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU1ITEMS3, = kind=3Dwx.ITEM_NORMAL, text=3D'Reload Data') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU1ITEMS4, = kind=3Dwx.ITEM_NORMAL, text=3D'Import Data File') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU1ITEMS6, = kind=3Dwx.ITEM_NORMAL, text=3D'Backup Data') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU1ITEMS7, = kind=3Dwx.ITEM_NORMAL, text=3D'Email Suggestions to JT Company') parent.Append(help=3D'', id=3DwxID_SIMPLEFILEPRINT, = kind=3Dwx.ITEM_NORMAL, text=3D'Print') self.Bind(wx.EVT_MENU, self.OnMenu1Items6Menu, id=3DwxID_SIMPLEMENU1ITEMS6) def _init_coll_Plot_Items(self, parent): # generated method, don't edit parent.Append(help=3D'', id=3DwxID_SIMPLEPLOTPLOTSETTINGS, kind=3Dwx.ITEM_NORMAL, text=3D'Plot Settings') parent.Append(help=3D'', id=3DwxID_SIMPLEPLOTEXPORT_IMAGE, kind=3Dwx.ITEM_NORMAL, text=3D'Export Image') parent.Append(help=3D'', id=3DwxID_SIMPLEPLOTEXPORT_TECPLOT, kind=3Dwx.ITEM_NORMAL, text=3D'Export Tecplot') parent.Append(help=3D'', id=3DwxID_SIMPLEPLOTPLOTCONTROLCHART, kind=3Dwx.ITEM_NORMAL, text=3D'Plot Control Chart') self.Bind(wx.EVT_MENU, self.OnPlotPlotcontrolchartMenu, id=3DwxID_SIMPLEPLOTPLOTCONTROLCHART) def _init_coll_Edit_Items(self, parent): # generated method, don't edit parent.Append(help=3D'', id=3DwxID_SIMPLEMENU2SETTINGS, = kind=3Dwx.ITEM_NORMAL, text=3D'Settings') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU2EDITPARTLIST, kind=3Dwx.ITEM_NORMAL, text=3D'Edit Part List') parent.Append(help=3D'', id=3DwxID_SIMPLEMENU2UPDATELIMITS, kind=3Dwx.ITEM_NORMAL, text=3D'Update Control Limits') def _init_coll_toolBar1_Tools(self, parent): # generated method, don't edit parent.AddControl(control=3Dself.comboBox1) parent.AddControl(control=3Dself.comboBox2) parent.AddControl(control=3Dself.comboBox3) parent.AddControl(control=3Dself.comboBox4) parent.Realize() def _init_sizers(self): # generated method, don't edit self.boxSizer1 =3D wx.BoxSizer(orient=3Dwx.VERTICAL) self.boxSizer2 =3D wx.BoxSizer(orient=3Dwx.HORIZONTAL) self.boxSizer4 =3D wx.BoxSizer(orient=3Dwx.VERTICAL) self._init_coll_boxSizer1_Items(self.boxSizer1) self._init_coll_boxSizer2_Items(self.boxSizer2) self._init_coll_boxSizer4_Items(self.boxSizer4) self.SetSizer(self.boxSizer1) def _init_utils(self): # generated method, don't edit self.menuBar1 =3D wx.MenuBar() self.menuBar1.SetFont(wx.Font(12, wx.SWISS, wx.NORMAL, = wx.NORMAL, False, 'Tahoma')) self.File =3D wx.Menu(title=3D'File') self.Edit =3D wx.Menu(title=3D'Edit') self.Plot =3D wx.Menu(title=3D'Plot') self.View =3D wx.Menu(title=3D'View') self._init_coll_menuBar1_Menus(self.menuBar1) self._init_coll_File_Items(self.File) self._init_coll_Edit_Items(self.Edit) self._init_coll_Plot_Items(self.Plot) self._init_coll_View_Items(self.View) def _init_ctrls(self, prnt): # generated method, don't edit wx.Frame.__init__(self, id=3DwxID_SIMPLE, name=3D'SIMPLE', = parent=3Dprnt, pos=3Dwx.Point(64, 148), size=3Dwx.Size(873, 579), style=3Dwx.DEFAULT_FRAME_STYLE, title=3D'SIMPLE') self._init_utils() self.SetClientSize(wx.Size(865, 552)) self.SetIcon(wx.Icon('C:/Documents and Settings/Jeffrey Peery/My = Documents/Code/PYTHON APPLICATIONS/SIMPLE/mag.ico', wx.BITMAP_TYPE_ICO)) self.SetFont(wx.Font(12, wx.SWISS, wx.ITALIC, wx.BOLD, False, = 'Tahoma')) self.SetMenuBar(self.menuBar1) self.SetAutoLayout(True) self.toolBar1 =3D wx.ToolBar(id=3DwxID_SIMPLETOOLBAR1, = name=3D'toolBar1', parent=3Dself, pos=3Dwx.Point(0, 0), size=3Dwx.Size(865, = 52), style=3Dwx.RAISED_BORDER | wx.NO_BORDER) self.toolBar1.SetToolBitmapSize(wx.Size(40, 40)) self.toolBar1.SetToolTipString('') self.comboBox1 =3D wx.ComboBox(choices=3D[], = id=3DwxID_SIMPLECOMBOBOX1, name=3D'comboBox1', parent=3Dself.toolBar1, = pos=3Dwx.Point(0, 13), size=3Dwx.Size(98, 24), style=3D0, value=3D'Part') self.comboBox1.SetLabel('Part') self.comboBox1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, = wx.NORMAL, False, 'Tahoma')) self.comboBox2 =3D wx.ComboBox(choices=3D[], = id=3DwxID_SIMPLECOMBOBOX2, name=3D'comboBox2', parent=3Dself.toolBar1, = pos=3Dwx.Point(98, 13), size=3Dwx.Size(122, 24), style=3D0, value=3D'Variable') self.comboBox2.SetInsertionPoint(9) self.comboBox2.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, = wx.NORMAL, False, 'Tahoma')) self.comboBox2.SetLabel('Variable') self.comboBox3 =3D wx.ComboBox(choices=3D[], = id=3DwxID_SIMPLECOMBOBOX3, name=3D'comboBox3', parent=3Dself.toolBar1, = pos=3Dwx.Point(220, 13), size=3Dwx.Size(98, 24), style=3D0, value=3D'From') self.comboBox3.SetLabel('From') self.comboBox3.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, = wx.NORMAL, False, 'Tahoma')) self.comboBox4 =3D wx.ComboBox(choices=3D[], = id=3DwxID_SIMPLECOMBOBOX4, name=3D'comboBox4', parent=3Dself.toolBar1, = pos=3Dwx.Point(318, 13), size=3Dwx.Size(90, 24), style=3D0, value=3D'To') self.comboBox4.SetLabel('To') self.comboBox4.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, = wx.NORMAL, False, 'Tahoma')) self.sashWindow1 =3D wx.SashWindow(id=3DwxID_SIMPLESASHWINDOW1, name=3D'sashWindow1', parent=3Dself, pos=3Dwx.Point(0, = 52), size=3Dwx.Size(432, 500), style=3Dwx.CLIP_CHILDREN | = wx.SW_3D) self.splitterWindow1 =3D = wx.SplitterWindow(id=3DwxID_SIMPLESPLITTERWINDOW1, name=3D'splitterWindow1', parent=3Dself.sashWindow1, = point=3Dwx.Point(0, 0), size=3Dwx.Size(200, 100), style=3Dwx.SP_3D) self.splitterWindow1.SetMinimumPaneSize(50) self.sashWindow2 =3D wx.SashWindow(id=3DwxID_SIMPLESASHWINDOW2, name=3D'sashWindow2', parent=3Dself.splitterWindow1, = pos=3Dwx.Point(2, -52), size=3Dwx.Size(428, 550), style=3Dwx.CLIP_CHILDREN | = wx.SW_3D) self.sashWindow3 =3D wx.SashWindow(id=3DwxID_SIMPLESASHWINDOW3, name=3D'sashWindow3', parent=3Dself.splitterWindow1, = pos=3Dwx.Point(2, 2), size=3Dwx.Size(428, 0), style=3Dwx.CLIP_CHILDREN | = wx.SW_3D) self.splitterWindow1.SplitHorizontally(self.sashWindow3, self.sashWindow2, 373) self._init_coll_toolBar1_Tools(self.toolBar1) self._init_sizers() def __init__(self, parent): self._init_ctrls(parent) =20 def OnPlotPlotcontrolchartMenu(self, event): # # Create Control Chart Plot=20 # import Numeric import matplotlib matplotlib.use('WXAgg') from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg = as FigureCanvas from matplotlib.backends.backend_wx import NavigationToolbar2Wx =20 from matplotlib.figure import Figure from matplotlib.mlab import normpdf from matplotlib import axis =20 from matplotlib.dates import date2num from datetime import datetime =20 #set background color self.SetBackgroundColour(wx.NamedColor("WHITE")) =20 #adjust figure size self.figure =3D Figure(figsize=3D(0.5,1), dpi=3D100) =20 #create the canvas self.canvas =3D FigureCanvas(self, -1, self.figure) =20 #add a sizer to box sizer3 #self.boxSizer5.AddWindow(self.boxSizer4, 1, = parent=3Dself.splitterWindow1, border=3D0, flag=3Dwx.TOP | wx.LEFT | = wx.RIGHT | wx.EXPAND) =20 #self.boxSizer5 =3D wx.BoxSizer(orient=3Dwx.VERTICAL, = parent=3Dself.splitterWindow1) =20 #Add plot to sizer self.boxSizer4.AddWindow(self.canvas, 1, border=3D0, = flag=3Dwx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND) =20 self.Fit() =20 #create a plot instance self.axes =3D self.figure.add_subplot(111) =20 #set the x label self.axes.set_xlabel('x-axis label') =20 #set y label self.axes.set_ylabel('y-axis label') =20 #set grid self.axes.grid(True) =20 #set title self.axes.set_title(r'title', color =3D 'g') =20 #turn the grid on or off self.axes.grid(True) =20 t1 =3D [0,1,2,3,4,5] t2 =3D ["one","two","three","four","five","six"] =20 #set the axis tick labels as strings self.axes.xaxis.set_ticklabels(t2) =20 #plot the data self.axes.plot(t1, 'ro') =20 =20 def OnToolBar1Tools0Tool(self, event): event.Skip() def OnToolBar1BoxchartplotTool(self, event): event.Skip() def OnMenu1Items6Menu(self, event): event.Skip() ------=_NextPart_000_0001_01C5680B.8CC35E30-- --__--__-- Message: 2 To: boa...@li... From: "Werner F. Bruhin" <wer...@fr...> Date: Fri, 03 Jun 2005 17:00:56 +0200 Subject: [Boa Constr] Re: splitter window troubles... This is a multi-part message in MIME format. --------------030400010604090508040600 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Hi Jeff, Jeff Peery wrote: > Hello, I've been trying to manage a splitter window. I attached my code. > The problem is that when I start the program (in python or just in the > editor window in boa) the splitter window sash doesn't show. Only until > I resize the window does the sash show up. I tried to reset the sash > position although it doesn't work. Also when I move the splitter window > sash there are funny lines that appear in the two windows that make up > the spitter window. Anyone know what the problem is here? I appreciate > the help! Thanks. - The toolbar is normally not in a sizer, just set the toolbar property on the frame to the toolbar and the frame will take over the sizing of it. - wx.TOP, wx.RIGHT, wx.LEFT are flags how to use the border, as you set border to zero you don't need them. If you set a border you often would use wx.ALL. - Haven't worked with sash windows, so changed your sample a bit to use two splitters, in each I put a panel with different background colour to differentiate them. - I guess your problem has to do with the use of sizers. A top level sizer needs to be "set" to a control. I named them according to the control they manage, i.e. the bsForFrame manages the children in the frame (in this case the sash), bsForSash1 does the same for the sash (in this case the splitter) and bsForPanel2 does it for the panel2 which contains another splitter. Each of these sizers is "set" to the corresponding control on its property pane. Hope this helps you. Werner P.S. I also put the code into simple.py so that Boa recognizes it as an wx.app file (this gives you things like Application ToDo lists etc). > > Jeff > > --------------030400010604090508040600 Content-Type: application/x-python; name="SIMPLE.py" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="SIMPLE.py" IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQojQm9hOkFwcDpCb2FBcHANCiNTSU1QTEUgY3JlYXRl ZCBieSBKZWZmIFBlZXJ5IE1heSAyNnRoIDIwMDUNCg0KaW1wb3J0IHd4DQppbXBvcnQgUGFy ZW50RnJhbWUNCg0KbW9kdWxlcyA9eydQYXJlbnRGcmFtZSc6IFsxLCAnTWFpbiBmcmFtZSBv ZiBBcHBsaWNhdGlvbicsICdQYXJlbnRGcmFtZS5weSddfQ0KDQpjbGFzcyBCb2FBcHAod3gu QXBwKToNCiAgICBkZWYgT25Jbml0KHNlbGYpOg0KICAgICAgICB3eC5Jbml0QWxsSW1hZ2VI YW5kbGVycygpDQogICAgICAgIHNlbGYubWFpbiA9IFBhcmVudEZyYW1lLmNyZWF0ZShOb25l KQ0KICAgICAgICBzZWxmLm1haW4uU2hvdygpDQogICAgICAgIHNlbGYuU2V0VG9wV2luZG93 KHNlbGYubWFpbikNCiAgICAgICAgcmV0dXJuIFRydWUNCg0KZGVmIG1haW4oKToNCiAgICBh cHBsaWNhdGlvbiA9IEJvYUFwcCgwKQ0KICAgIGFwcGxpY2F0aW9uLk1haW5Mb29wKCkNCg0K aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoNCiAgICBtYWluKCkNCg== --------------030400010604090508040600 Content-Type: application/x-python; name="ParentFrame.py" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ParentFrame.py" I0JvYTpGcmFtZTpTSU1QTEUNCg0KaW1wb3J0IHd4DQojI2ltcG9ydCBQYXJ0TGlzdFdpbmRv dw0KIyNpbXBvcnQgQ29udHJvbFdpbmRvdw0KIyNpbXBvcnQgUGxvdFdpbmRvd0NDDQoNCiAg ICANCmRlZiBjcmVhdGUocGFyZW50KToNCiAgICByZXR1cm4gU0lNUExFKHBhcmVudCkNCg0K W3d4SURfU0lNUExFLCB3eElEX1NJTVBMRUNPTUJPQk9YMSwgd3hJRF9TSU1QTEVDT01CT0JP WDIsIA0KIHd4SURfU0lNUExFQ09NQk9CT1gzLCB3eElEX1NJTVBMRUNPTUJPQk9YNCwgd3hJ RF9TSU1QTEVQQU5FTDEsIA0KIHd4SURfU0lNUExFUEFORUwyLCB3eElEX1NJTVBMRVBBTkVM Mywgd3hJRF9TSU1QTEVQQU5FTDQsIA0KIHd4SURfU0lNUExFU0FTSFdJTkRPVzEsIHd4SURf U0lNUExFU1BMSVRURVJXSU5ET1cxLCANCiB3eElEX1NJTVBMRVNQTElUVEVSV0lORE9XMiwg d3hJRF9TSU1QTEVUT09MQkFSMSwgDQpdID0gW3d4Lk5ld0lkKCkgZm9yIF9pbml0X2N0cmxz IGluIHJhbmdlKDEzKV0NCg0KW3d4SURfU0lNUExFVE9PTEJBUjFCT1hDSEFSVFBMT1QsIHd4 SURfU0lNUExFVE9PTEJBUjFDT05UUk9MQ0hBUlQsIA0KIHd4SURfU0lNUExFVE9PTEJBUjFO T1JNUFJPQkRFTlNGVU5DLCB3eElEX1NJTVBMRVRPT0xCQVIxVE9PTFMxNCwgDQogd3hJRF9T SU1QTEVUT09MQkFSMVRPT0xTMywgd3hJRF9TSU1QTEVUT09MQkFSMVRPT0xTNCwgDQogd3hJ RF9TSU1QTEVUT09MQkFSMVRPT0xTNSwgd3hJRF9TSU1QTEVUT09MQkFSMVRPT0xTNiwgDQpd ID0gW3d4Lk5ld0lkKCkgZm9yIF9pbml0X2NvbGxfdG9vbEJhcjFfVG9vbHMgaW4gcmFuZ2Uo OCldDQoNClt3eElEX1NJTVBMRU1FTlUyRURJVFBBUlRMSVNULCB3eElEX1NJTVBMRU1FTlUy U0VUVElOR1MsIA0KIHd4SURfU0lNUExFTUVOVTJVUERBVEVMSU1JVFMsIA0KXSA9IFt3eC5O ZXdJZCgpIGZvciBfaW5pdF9jb2xsX0VkaXRfSXRlbXMgaW4gcmFuZ2UoMyldDQoNClt3eElE X1NJTVBMRUZJTEVQUklOVCwgd3hJRF9TSU1QTEVNRU5VMUlURU1TMSwgd3hJRF9TSU1QTEVN RU5VMUlURU1TMiwgDQogd3hJRF9TSU1QTEVNRU5VMUlURU1TMywgd3hJRF9TSU1QTEVNRU5V MUlURU1TNCwgd3hJRF9TSU1QTEVNRU5VMUlURU1TNiwgDQogd3hJRF9TSU1QTEVNRU5VMUlU RU1TNywgDQpdID0gW3d4Lk5ld0lkKCkgZm9yIF9pbml0X2NvbGxfRmlsZV9JdGVtcyBpbiBy YW5nZSg3KV0NCg0KW3d4SURfU0lNUExFUExPVEVYUE9SVF9JTUFHRSwgd3hJRF9TSU1QTEVQ TE9URVhQT1JUX1RFQ1BMT1QsIA0KIHd4SURfU0lNUExFUExPVFBMT1RDT05UUk9MQ0hBUlQs IHd4SURfU0lNUExFUExPVFBMT1RTRVRUSU5HUywgDQpdID0gW3d4Lk5ld0lkKCkgZm9yIF9p bml0X2NvbGxfUGxvdF9JdGVtcyBpbiByYW5nZSg0KV0NCg0KW3d4SURfU0lNUExFVklFV0NM RUFSQ1dJTkRPVywgd3hJRF9TSU1QTEVWSUVXQ0xFQVJDV0lORE9XLCANCiB3eElEX1NJTVBM RVZJRVdTSE9XQ1dJTkRPVywgd3hJRF9TSU1QTEVWSUVXU0hPV0dXSU5ET1csIA0KIHd4SURf U0lNUExFVklFV1NIT1dQTFdJTkRPVywgDQpdID0gW3d4Lk5ld0lkKCkgZm9yIF9pbml0X2Nv bGxfVmlld19JdGVtcyBpbiByYW5nZSg1KV0NCg0KY2xhc3MgU0lNUExFKHd4LkZyYW1lKToN CiAgICBkZWYgX2luaXRfY29sbF9ic0ZvclBhbmVsMl9JdGVtcyhzZWxmLCBwYXJlbnQpOg0K ICAgICAgICAjIGdlbmVyYXRlZCBtZXRob2QsIGRvbid0IGVkaXQNCg0KICAgICAgICBwYXJl bnQuQWRkV2luZG93KHNlbGYuc3BsaXR0ZXJXaW5kb3cyLCAxLCBib3JkZXI9MCwgZmxhZz13 eC5FWFBBTkQpDQoNCiAgICBkZWYgX2luaXRfY29sbF9ic0ZvckZyYW1lX0l0ZW1zKHNlbGYs IHBhcmVudCk6DQogICAgICAgICMgZ2VuZXJhdGVkIG1ldGhvZCwgZG9uJ3QgZWRpdA0KDQog ICAgICAgIHBhcmVudC5BZGRXaW5kb3coc2VsZi5zYXNoV2luZG93MSwgMSwgYm9yZGVyPTAs IGZsYWc9d3guRVhQQU5EKQ0KDQogICAgZGVmIF9pbml0X2NvbGxfYnNGb3JTYXNoMV9JdGVt cyhzZWxmLCBwYXJlbnQpOg0KICAgICAgICAjIGdlbmVyYXRlZCBtZXRob2QsIGRvbid0IGVk aXQNCg0KICAgICAgICBwYXJlbnQuQWRkV2luZG93KHNlbGYuc3BsaXR0ZXJXaW5kb3cxLCAw LCBib3JkZXI9MCwgZmxhZz0wKQ0KDQogICAgZGVmIF9pbml0X2NvbGxfVmlld19JdGVtcyhz ZWxmLCBwYXJlbnQpOg0KICAgICAgICAjIGdlbmVyYXRlZCBtZXRob2QsIGRvbid0IGVkaXQN Cg0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9JycsIGlkPXd4SURfU0lNUExFVklFV0NM RUFSQ1dJTkRPVywNCiAgICAgICAgICAgICAga2luZD13eC5JVEVNX05PUk1BTCwgdGV4dD0n Q2xlYXIgQ29udHJvbCBXaW5kb3cnKQ0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9Jycs IGlkPXd4SURfU0lNUExFVklFV1NIT1dDV0lORE9XLA0KICAgICAgICAgICAgICBraW5kPXd4 LklURU1fTk9STUFMLCB0ZXh0PSdTaG93IENvbnRyb2wgV2lkb3cnKQ0KICAgICAgICBwYXJl bnQuQXBwZW5kKGhlbHA9JycsIGlkPXd4SURfU0lNUExFVklFV1NIT1dHV0lORE9XLA0KICAg ICAgICAgICAgICBraW5kPXd4LklURU1fTk9STUFMLCB0ZXh0PSdTaG93IEdyYXBoaWNhbCBX aW5kb3cnKQ0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9JycsIGlkPXd4SURfU0lNUExF VklFV1NIT1dQTFdJTkRPVywNCiAgICAgICAgICAgICAga2luZD13eC5JVEVNX05PUk1BTCwg dGV4dD0nU2hvdyBQYXJ0IGxpc3QnKQ0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9Jycs IGlkPXd4SURfU0lNUExFVklFV0NMRUFSQ1dJTkRPVywNCiAgICAgICAgICAgICAga2luZD13 eC5JVEVNX05PUk1BTCwgdGV4dD0nQ2xlYXIgQ29udHJvbCBXaW5kb3cnKQ0KDQogICAgZGVm IF9pbml0X2NvbGxfbWVudUJhcjFfTWVudXMoc2VsZiwgcGFyZW50KToNCiAgICAgICAgIyBn ZW5lcmF0ZWQgbWV0aG9kLCBkb24ndCBlZGl0DQoNCiAgICAgICAgcGFyZW50LkFwcGVuZCht ZW51PXNlbGYuRmlsZSwgdGl0bGU9J0ZpbGUnKQ0KICAgICAgICBwYXJlbnQuQXBwZW5kKG1l bnU9c2VsZi5FZGl0LCB0aXRsZT0nRWRpdCcpDQogICAgICAgIHBhcmVudC5BcHBlbmQobWVu dT1zZWxmLlZpZXcsIHRpdGxlPSdWaWV3JykNCiAgICAgICAgcGFyZW50LkFwcGVuZChtZW51 PXNlbGYuUGxvdCwgdGl0bGU9J1Bsb3QnKQ0KDQogICAgZGVmIF9pbml0X2NvbGxfRmlsZV9J dGVtcyhzZWxmLCBwYXJlbnQpOg0KICAgICAgICAjIGdlbmVyYXRlZCBtZXRob2QsIGRvbid0 IGVkaXQNCg0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9JycsIGlkPXd4SURfU0lNUExF TUVOVTFJVEVNUzEsIGtpbmQ9d3guSVRFTV9OT1JNQUwsDQogICAgICAgICAgICAgIHRleHQ9 J1N0YXJ0IE1vbml0b3InKQ0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9JycsIGlkPXd4 SURfU0lNUExFTUVOVTFJVEVNUzIsIGtpbmQ9d3guSVRFTV9OT1JNQUwsDQogICAgICAgICAg ICAgIHRleHQ9J1N0b3AgTW9uaXRvcicpDQogICAgICAgIHBhcmVudC5BcHBlbmQoaGVscD0n JywgaWQ9d3hJRF9TSU1QTEVNRU5VMUlURU1TMywga2luZD13eC5JVEVNX05PUk1BTCwNCiAg ICAgICAgICAgICAgdGV4dD0nUmVsb2FkIERhdGEnKQ0KICAgICAgICBwYXJlbnQuQXBwZW5k KGhlbHA9JycsIGlkPXd4SURfU0lNUExFTUVOVTFJVEVNUzQsIGtpbmQ9d3guSVRFTV9OT1JN QUwsDQogICAgICAgICAgICAgIHRleHQ9J0ltcG9ydCBEYXRhIEZpbGUnKQ0KICAgICAgICBw YXJlbnQuQXBwZW5kKGhlbHA9JycsIGlkPXd4SURfU0lNUExFTUVOVTFJVEVNUzYsIGtpbmQ9 d3guSVRFTV9OT1JNQUwsDQogICAgICAgICAgICAgIHRleHQ9J0JhY2t1cCBEYXRhJykNCiAg ICAgICAgcGFyZW50LkFwcGVuZChoZWxwPScnLCBpZD13eElEX1NJTVBMRU1FTlUxSVRFTVM3 LCBraW5kPXd4LklURU1fTk9STUFMLA0KICAgICAgICAgICAgICB0ZXh0PSdFbWFpbCBTdWdn ZXN0aW9ucyB0byBKVCBDb21wYW55JykNCiAgICAgICAgcGFyZW50LkFwcGVuZChoZWxwPScn LCBpZD13eElEX1NJTVBMRUZJTEVQUklOVCwga2luZD13eC5JVEVNX05PUk1BTCwNCiAgICAg ICAgICAgICAgdGV4dD0nUHJpbnQnKQ0KICAgICAgICBzZWxmLkJpbmQod3guRVZUX01FTlUs IHNlbGYuT25NZW51MUl0ZW1zNk1lbnUsDQogICAgICAgICAgICAgIGlkPXd4SURfU0lNUExF TUVOVTFJVEVNUzYpDQoNCiAgICBkZWYgX2luaXRfY29sbF9QbG90X0l0ZW1zKHNlbGYsIHBh cmVudCk6DQogICAgICAgICMgZ2VuZXJhdGVkIG1ldGhvZCwgZG9uJ3QgZWRpdA0KDQogICAg ICAgIHBhcmVudC5BcHBlbmQoaGVscD0nJywgaWQ9d3hJRF9TSU1QTEVQTE9UUExPVFNFVFRJ TkdTLA0KICAgICAgICAgICAgICBraW5kPXd4LklURU1fTk9STUFMLCB0ZXh0PSdQbG90IFNl dHRpbmdzJykNCiAgICAgICAgcGFyZW50LkFwcGVuZChoZWxwPScnLCBpZD13eElEX1NJTVBM RVBMT1RFWFBPUlRfSU1BR0UsDQogICAgICAgICAgICAgIGtpbmQ9d3guSVRFTV9OT1JNQUws IHRleHQ9J0V4cG9ydCBJbWFnZScpDQogICAgICAgIHBhcmVudC5BcHBlbmQoaGVscD0nJywg aWQ9d3hJRF9TSU1QTEVQTE9URVhQT1JUX1RFQ1BMT1QsDQogICAgICAgICAgICAgIGtpbmQ9 d3guSVRFTV9OT1JNQUwsIHRleHQ9J0V4cG9ydCBUZWNwbG90JykNCiAgICAgICAgcGFyZW50 LkFwcGVuZChoZWxwPScnLCBpZD13eElEX1NJTVBMRVBMT1RQTE9UQ09OVFJPTENIQVJULA0K ICAgICAgICAgICAgICBraW5kPXd4LklURU1fTk9STUFMLCB0ZXh0PSdQbG90IENvbnRyb2wg Q2hhcnQnKQ0KICAgICAgICBzZWxmLkJpbmQod3guRVZUX01FTlUsIHNlbGYuT25QbG90UGxv dGNvbnRyb2xjaGFydE1lbnUsDQogICAgICAgICAgICAgIGlkPXd4SURfU0lNUExFUExPVFBM T1RDT05UUk9MQ0hBUlQpDQoNCiAgICBkZWYgX2luaXRfY29sbF9FZGl0X0l0ZW1zKHNlbGYs IHBhcmVudCk6DQogICAgICAgICMgZ2VuZXJhdGVkIG1ldGhvZCwgZG9uJ3QgZWRpdA0KDQog ICAgICAgIHBhcmVudC5BcHBlbmQoaGVscD0nJywgaWQ9d3hJRF9TSU1QTEVNRU5VMlNFVFRJ TkdTLCBraW5kPXd4LklURU1fTk9STUFMLA0KICAgICAgICAgICAgICB0ZXh0PSdTZXR0aW5n cycpDQogICAgICAgIHBhcmVudC5BcHBlbmQoaGVscD0nJywgaWQ9d3hJRF9TSU1QTEVNRU5V MkVESVRQQVJUTElTVCwNCiAgICAgICAgICAgICAga2luZD13eC5JVEVNX05PUk1BTCwgdGV4 dD0nRWRpdCBQYXJ0IExpc3QnKQ0KICAgICAgICBwYXJlbnQuQXBwZW5kKGhlbHA9JycsIGlk PXd4SURfU0lNUExFTUVOVTJVUERBVEVMSU1JVFMsDQogICAgICAgICAgICAgIGtpbmQ9d3gu SVRFTV9OT1JNQUwsIHRleHQ9J1VwZGF0ZSBDb250cm9sIExpbWl0cycpDQoNCiAgICBkZWYg X2luaXRfY29sbF90b29sQmFyMV9Ub29scyhzZWxmLCBwYXJlbnQpOg0KICAgICAgICAjIGdl bmVyYXRlZCBtZXRob2QsIGRvbid0IGVkaXQNCg0KICAgICAgICBwYXJlbnQuQWRkQ29udHJv bChjb250cm9sPXNlbGYuY29tYm9Cb3gxKQ0KICAgICAgICBwYXJlbnQuQWRkQ29udHJvbChj b250cm9sPXNlbGYuY29tYm9Cb3gyKQ0KICAgICAgICBwYXJlbnQuQWRkQ29udHJvbChjb250 cm9sPXNlbGYuY29tYm9Cb3gzKQ0KICAgICAgICBwYXJlbnQuQWRkQ29udHJvbChjb250cm9s PXNlbGYuY29tYm9Cb3g0KQ0KDQogICAgICAgIHBhcmVudC5SZWFsaXplKCkNCg0KICAgIGRl ZiBfaW5pdF9zaXplcnMoc2VsZik6DQogICAgICAgICMgZ2VuZXJhdGVkIG1ldGhvZCwgZG9u J3QgZWRpdA0KICAgICAgICBzZWxmLmJzRm9yRnJhbWUgPSB3eC5Cb3hTaXplcihvcmllbnQ9 d3guVkVSVElDQUwpDQoNCiAgICAgICAgc2VsZi5ic0ZvclNhc2gxID0gd3guQm94U2l6ZXIo b3JpZW50PXd4LlZFUlRJQ0FMKQ0KDQogICAgICAgIHNlbGYuYnNGb3JQYW5lbDIgPSB3eC5C b3hTaXplcihvcmllbnQ9d3guVkVSVElDQUwpDQoNCiAgICAgICAgc2VsZi5faW5pdF9jb2xs X2JzRm9yRnJhbWVfSXRlbXMoc2VsZi5ic0ZvckZyYW1lKQ0KICAgICAgICBzZWxmLl9pbml0 X2NvbGxfYnNGb3JTYXNoMV9JdGVtcyhzZWxmLmJzRm9yU2FzaDEpDQogICAgICAgIHNlbGYu X2luaXRfY29sbF9ic0ZvclBhbmVsMl9JdGVtcyhzZWxmLmJzRm9yUGFuZWwyKQ0KDQogICAg ICAgIHNlbGYuU2V0U2l6ZXIoc2VsZi5ic0ZvckZyYW1lKQ0KICAgICAgICBzZWxmLnNhc2hX aW5kb3cxLlNldFNpemVyKHNlbGYuYnNGb3JTYXNoMSkNCiAgICAgICAgc2VsZi5wYW5lbDIu U2V0U2l6ZXIoc2VsZi5ic0ZvclBhbmVsMikNCg0KICAgIGRlZiBfaW5pdF91dGlscyhzZWxm KToNCiAgICAgICAgIyBnZW5lcmF0ZWQgbWV0aG9kLCBkb24ndCBlZGl0DQogICAgICAgIHNl bGYubWVudUJhcjEgPSB3eC5NZW51QmFyKCkNCiAgICAgICAgc2VsZi5tZW51QmFyMS5TZXRG b250KHd4LkZvbnQoMTIsIHd4LlNXSVNTLCB3eC5OT1JNQUwsIHd4Lk5PUk1BTCwgRmFsc2Us DQogICAgICAgICAgICAgICdUYWhvbWEnKSkNCg0KICAgICAgICBzZWxmLkZpbGUgPSB3eC5N ZW51KHRpdGxlPSdGaWxlJykNCg0KICAgICAgICBzZWxmLkVkaXQgPSB3eC5NZW51KHRpdGxl PSdFZGl0JykNCg0KICAgICAgICBzZWxmLlBsb3QgPSB3eC5NZW51KHRpdGxlPSdQbG90JykN Cg0KICAgICAgICBzZWxmLlZpZXcgPSB3eC5NZW51KHRpdGxlPSdWaWV3JykNCg0KICAgICAg ICBzZWxmLl9pbml0X2NvbGxfbWVudUJhcjFfTWVudXMoc2VsZi5tZW51QmFyMSkNCiAgICAg ICAgc2VsZi5faW5pdF9jb2xsX0ZpbGVfSXRlbXMoc2VsZi5GaWxlKQ0KICAgICAgICBzZWxm Ll9pbml0X2NvbGxfRWRpdF9JdGVtcyhzZWxmLkVkaXQpDQogICAgICAgIHNlbGYuX2luaXRf Y29sbF9QbG90X0l0ZW1zKHNlbGYuUGxvdCkNCiAgICAgICAgc2VsZi5faW5pdF9jb2xsX1Zp ZXdfSXRlbXMoc2VsZi5WaWV3KQ0KDQogICAgZGVmIF9pbml0X2N0cmxzKHNlbGYsIHBybnQp Og0KICAgICAgICAjIGdlbmVyYXRlZCBtZXRob2QsIGRvbid0IGVkaXQNCiAgICAgICAgd3gu RnJhbWUuX19pbml0X18oc2VsZiwgaWQ9d3hJRF9TSU1QTEUsIG5hbWU9J1NJTVBMRScsIHBh cmVudD1wcm50LA0KICAgICAgICAgICAgICBwb3M9d3guUG9pbnQoMTE5LCAxMzYpLCBzaXpl PXd4LlNpemUoODczLCA1ODYpLA0KICAgICAgICAgICAgICBzdHlsZT13eC5ERUZBVUxUX0ZS QU1FX1NUWUxFLCB0aXRsZT0nU0lNUExFJykNCiAgICAgICAgc2VsZi5faW5pdF91dGlscygp DQogICAgICAgIHNlbGYuU2V0Q2xpZW50U2l6ZSh3eC5TaXplKDg2NSwgNTUyKSkNCiAgICAg ICAgc2VsZi5TZXRGb250KHd4LkZvbnQoMTIsIHd4LlNXSVNTLCB3eC5JVEFMSUMsIHd4LkJP TEQsIEZhbHNlLCAnVGFob21hJykpDQogICAgICAgIHNlbGYuU2V0TWVudUJhcihzZWxmLm1l bnVCYXIxKQ0KICAgICAgICBzZWxmLlNldEF1dG9MYXlvdXQoVHJ1ZSkNCg0KICAgICAgICBz ZWxmLnRvb2xCYXIxID0gd3guVG9vbEJhcihpZD13eElEX1NJTVBMRVRPT0xCQVIxLCBuYW1l PSd0b29sQmFyMScsDQogICAgICAgICAgICAgIHBhcmVudD1zZWxmLCBwb3M9d3guUG9pbnQo MCwgMCksIHNpemU9d3guU2l6ZSg4NjUsIDUyKSwNCiAgICAgICAgICAgICAgc3R5bGU9d3gu UkFJU0VEX0JPUkRFUiB8IHd4Lk5PX0JPUkRFUikNCiAgICAgICAgc2VsZi50b29sQmFyMS5T ZXRUb29sQml0bWFwU2l6ZSh3eC5TaXplKDQwLCA0MCkpDQogICAgICAgIHNlbGYudG9vbEJh cjEuU2V0VG9vbFRpcFN0cmluZygnJykNCiAgICAgICAgc2VsZi5TZXRUb29sQmFyKHNlbGYu dG9vbEJhcjEpDQoNCiAgICAgICAgc2VsZi5jb21ib0JveDEgPSB3eC5Db21ib0JveChjaG9p Y2VzPVtdLCBpZD13eElEX1NJTVBMRUNPTUJPQk9YMSwNCiAgICAgICAgICAgICAgbmFtZT0n Y29tYm9Cb3gxJywgcGFyZW50PXNlbGYudG9vbEJhcjEsIHBvcz13eC5Qb2ludCgwLCAxMSks DQogICAgICAgICAgICAgIHNpemU9d3guU2l6ZSg5OCwgMjQpLCBzdHlsZT0wLCB2YWx1ZT0n UGFydCcpDQogICAgICAgIHNlbGYuY29tYm9Cb3gxLlNldExhYmVsKCdQYXJ0JykNCiAgICAg ICAgc2VsZi5jb21ib0JveDEuU2V0Rm9udCh3eC5Gb250KDEwLCB3eC5TV0lTUywgd3guTk9S TUFMLCB3eC5OT1JNQUwsDQogICAgICAgICAgICAgIEZhbHNlLCAnVGFob21hJykpDQoNCiAg ICAgICAgc2VsZi5jb21ib0JveDIgPSB3eC5Db21ib0JveChjaG9pY2VzPVtdLCBpZD13eElE X1NJTVBMRUNPTUJPQk9YMiwNCiAgICAgICAgICAgICAgbmFtZT0nY29tYm9Cb3gyJywgcGFy ZW50PXNlbGYudG9vbEJhcjEsIHBvcz13eC5Qb2ludCg5OCwgMTEpLA0KICAgICAgICAgICAg ICBzaXplPXd4LlNpemUoMTIyLCAyNCksIHN0eWxlPTAsIHZhbHVlPSdWYXJpYWJsZScpDQog ICAgICAgIHNlbGYuY29tYm9Cb3gyLlNldEluc2VydGlvblBvaW50KDkpDQogICAgICAgIHNl bGYuY29tYm9Cb3gyLlNldEZvbnQod3guRm9udCgxMCwgd3guU1dJU1MsIHd4Lk5PUk1BTCwg d3guTk9STUFMLA0KICAgICAgICAgICAgICBGYWxzZSwgJ1RhaG9tYScpKQ0KICAgICAgICBz ZWxmLmNvbWJvQm94Mi5TZXRMYWJlbCgnVmFyaWFibGUnKQ0KDQogICAgICAgIHNlbGYuY29t Ym9Cb3gzID0gd3guQ29tYm9Cb3goY2hvaWNlcz1bXSwgaWQ9d3hJRF9TSU1QTEVDT01CT0JP WDMsDQogICAgICAgICAgICAgIG5hbWU9J2NvbWJvQm94MycsIHBhcmVudD1zZWxmLnRvb2xC YXIxLCBwb3M9d3guUG9pbnQoMjIwLCAxMSksDQogICAgICAgICAgICAgIHNpemU9d3guU2l6 ZSg5OCwgMjQpLCBzdHlsZT0wLCB2YWx1ZT0nRnJvbScpDQogICAgICAgIHNlbGYuY29tYm9C b3gzLlNldExhYmVsKCdGcm9tJykNCiAgICAgICAgc2VsZi5jb21ib0JveDMuU2V0Rm9udCh3 eC5Gb250KDEwLCB3eC5TV0lTUywgd3guTk9STUFMLCB3eC5OT1JNQUwsDQogICAgICAgICAg ICAgIEZhbHNlLCAnVGFob21hJykpDQoNCiAgICAgICAgc2VsZi5jb21ib0JveDQgPSB3eC5D b21ib0JveChjaG9pY2VzPVtdLCBpZD13eElEX1NJTVBMRUNPTUJPQk9YNCwNCiAgICAgICAg ICAgICAgbmFtZT0nY29tYm9Cb3g0JywgcGFyZW50PXNlbGYudG9vbEJhcjEsIHBvcz13eC5Q b2ludCgzMTgsIDExKSwNCiAgICAgICAgICAgICAgc2l6ZT13eC5TaXplKDkwLCAyNCksIHN0 eWxlPTAsIHZhbHVlPSdUbycpDQogICAgICAgIHNlbGYuY29tYm9Cb3g0LlNldExhYmVsKCdU bycpDQogICAgICAgIHNlbGYuY29tYm9Cb3g0LlNldEZvbnQod3guRm9udCgxMCwgd3guU1dJ U1MsIHd4Lk5PUk1BTCwgd3guTk9STUFMLA0KICAgICAgICAgICAgICBGYWxzZSwgJ1RhaG9t YScpKQ0KDQogICAgICAgIHNlbGYuc2FzaFdpbmRvdzEgPSB3eC5TYXNoV2luZG93KGlkPXd4 SURfU0lNUExFU0FTSFdJTkRPVzEsDQogICAgICAgICAgICAgIG5hbWU9J3Nhc2hXaW5kb3cx JywgcGFyZW50PXNlbGYsIHBvcz13eC5Qb2ludCgwLCAwKSwNCiAgICAgICAgICAgICAgc2l6 ZT13eC5TaXplKDg2NSwgNTUyKSwgc3R5bGU9d3guQ0xJUF9DSElMRFJFTiB8IHd4LlNXXzNE KQ0KDQogICAgICAgIHNlbGYuc3BsaXR0ZXJXaW5kb3cxID0gd3guU3BsaXR0ZXJXaW5kb3co aWQ9d3hJRF9TSU1QTEVTUExJVFRFUldJTkRPVzEsDQogICAgICAgICAgICAgIG5hbWU9J3Nw bGl0dGVyV2luZG93MScsIHBhcmVudD1zZWxmLnNhc2hXaW5kb3cxLA0KICAgICAgICAgICAg ICBwb2ludD13eC5Qb2ludCg4MCwgLTI0KSwgc2l6ZT13eC5TaXplKDIwMCwgMTAwKSwgc3R5 bGU9d3guU1BfM0QpDQoNCiAgICAgICAgc2VsZi5wYW5lbDEgPSB3eC5QYW5lbChpZD13eElE X1NJTVBMRVBBTkVMMSwgbmFtZT0ncGFuZWwxJywNCiAgICAgICAgICAgICAgcGFyZW50PXNl bGYuc3BsaXR0ZXJXaW5kb3cxLCBwb3M9d3guUG9pbnQoMCwgMCksIHNpemU9d3guU2l6ZSgw LA0KICAgICAgICAgICAgICA1NTIpLCBzdHlsZT13eC5UQUJfVFJBVkVSU0FMKQ0KICAgICAg ICBzZWxmLnBhbmVsMS5TZXRCYWNrZ3JvdW5kQ29sb3VyKHd4LkNvbG91cigyNTUsIDI1NSwg MTI4KSkNCg0KICAgICAgICBzZWxmLnBhbmVsMiA9IHd4LlBhbmVsKGlkPXd4SURfU0lNUExF UEFORUwyLCBuYW1lPSdwYW5lbDInLA0KICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi5zcGxp dHRlcldpbmRvdzEsIHBvcz13eC5Qb2ludCgwLCAwKSwgc2l6ZT13eC5TaXplKDg2NSwNCiAg ICAgICAgICAgICAgNTUyKSwgc3R5bGU9d3guVEFCX1RSQVZFUlNBTCkNCiAgICAgICAgc2Vs Zi5wYW5lbDIuU2V0QmFja2dyb3VuZENvbG91cih3eC5Db2xvdXIoMjU1LCAxMjgsIDEyOCkp DQogICAgICAgIHNlbGYuc3BsaXR0ZXJXaW5kb3cxLlNwbGl0VmVydGljYWxseShzZWxmLnBh bmVsMSwgc2VsZi5wYW5lbDIsIDIwMCkNCg0KICAgICAgICBzZWxmLnNwbGl0dGVyV2luZG93 MiA9IHd4LlNwbGl0dGVyV2luZG93KGlkPXd4SURfU0lNUExFU1BMSVRURVJXSU5ET1cyLA0K ICAgICAgICAgICAgICBuYW1lPSdzcGxpdHRlcldpbmRvdzInLCBwYXJlbnQ9c2VsZi5wYW5l bDIsIHBvaW50PXd4LlBvaW50KDAsIDApLA0KICAgICAgICAgICAgICBzaXplPXd4LlNpemUo MjAwLCAxMDApLCBzdHlsZT13eC5TUF8zRCkNCg0KICAgICAgICBzZWxmLnBhbmVsMyA9IHd4 LlBhbmVsKGlkPXd4SURfU0lNUExFUEFORUwzLCBuYW1lPSdwYW5lbDMnLA0KICAgICAgICAg ICAgICBwYXJlbnQ9c2VsZi5zcGxpdHRlcldpbmRvdzIsIHBvcz13eC5Qb2ludCgwLCAwKSwg c2l6ZT13eC5TaXplKDg2NSwNCiAgICAgICAgICAgICAgNDQ4KSwgc3R5bGU9d3guVEFCX1RS QVZFUlNBTCkNCiAgICAgICAgc2VsZi5wYW5lbDMuU2V0QmFja2dyb3VuZENvbG91cih3eC5D b2xvdXIoMTI4LCAyNTUsIDI1NSkpDQoNCiAgICAgICAgc2VsZi5wYW5lbDQgPSB3eC5QYW5l bChpZD13eElEX1NJTVBMRVBBTkVMNCwgbmFtZT0ncGFuZWw0JywNCiAgICAgICAgICAgICAg cGFyZW50PXNlbGYuc3BsaXR0ZXJXaW5kb3cyLCBwb3M9d3guUG9pbnQoMCwgNDUyKSwNCiAg ICAgICAgICAgICAgc2l6ZT13eC5TaXplKDg2NSwgMTAwKSwgc3R5bGU9d3guVEFCX1RSQVZF UlNBTCkNCiAgICAgICAgc2VsZi5wYW5lbDQuU2V0QmFja2dyb3VuZENvbG91cih3eC5Db2xv dXIoMTI4LCAyNTUsIDEyOCkpDQogICAgICAgIHNlbGYuc3BsaXR0ZXJXaW5kb3cyLlNwbGl0 SG9yaXpvbnRhbGx5KHNlbGYucGFuZWwzLCBzZWxmLnBhbmVsNCwgMzc2KQ0KDQogICAgICAg IHNlbGYuX2luaXRfY29sbF90b29sQmFyMV9Ub29scyhzZWxmLnRvb2xCYXIxKQ0KDQogICAg ICAgIHNlbGYuX2luaXRfc2l6ZXJzKCkNCg0KICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJl bnQpOg0KICAgICAgICBzZWxmLl9pbml0X2N0cmxzKHBhcmVudCkNCiAgICAgICAgDQogICAg ZGVmIE9uUGxvdFBsb3Rjb250cm9sY2hhcnRNZW51KHNlbGYsIGV2ZW50KToNCiAgICAgICAg Iw0KICAgICAgICAjIENyZWF0ZSBDb250cm9sIENoYXJ0IFBsb3QgDQogICAgICAgICMNCiAg ICAgICAgaW1wb3J0IE51bWVyaWMNCiAgICAgICAgaW1wb3J0IG1hdHBsb3RsaWINCiAgICAg ICAgbWF0cGxvdGxpYi51c2UoJ1dYQWdnJykNCiAgICAgICAgZnJvbSBtYXRwbG90bGliLmJh Y2tlbmRzLmJhY2tlbmRfd3hhZ2cgaW1wb3J0IEZpZ3VyZUNhbnZhc1d4QWdnIGFzIEZpZ3Vy ZUNhbnZhcw0KICAgICAgICBmcm9tIG1hdHBsb3RsaWIuYmFja2VuZHMuYmFja2VuZF93eCBp bXBvcnQgTmF2aWdhdGlvblRvb2xiYXIyV3gNCiAgICAgICAgDQogICAgICAgIGZyb20gbWF0 cGxvdGxpYi5maWd1cmUgaW1wb3J0IEZpZ3VyZQ0KICAgICAgICBmcm9tIG1hdHBsb3RsaWIu bWxhYiBpbXBvcnQgbm9ybXBkZg0KICAgICAgICBmcm9tIG1hdHBsb3RsaWIgaW1wb3J0IGF4 aXMNCiAgICAgICAgDQogICAgICAgIGZyb20gbWF0cGxvdGxpYi5kYXRlcyBpbXBvcnQgZGF0 ZTJudW0NCiAgICAgICAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUNCg0KICAgICAg ICANCiAgICAgICAgI3NldCBiYWNrZ3JvdW5kIGNvbG9yDQogICAgICAgIHNlbGYuU2V0QmFj a2dyb3VuZENvbG91cih3eC5OYW1lZENvbG9yKCJXSElURSIpKQ0KICAgICAgICANCiAgICAg ICAgI2FkanVzdCBmaWd1cmUgc2l6ZQ0KICAgICAgICBzZWxmLmZpZ3VyZSA9IEZpZ3VyZShm aWdzaXplPSgwLjUsMSksIGRwaT0xMDApDQogICAgICAgIA0KICAgICAgICAjY3JlYXRlIHRo ZSBjYW52YXMNCiAgICAgICAgc2VsZi5jYW52YXMgPSBGaWd1cmVDYW52YXMoc2VsZiwgLTEs IHNlbGYuZmlndXJlKQ0KICAgICAgICANCiAgICAgICAgI2FkZCBhIHNpemVyIHRvIGJveCBz aXplcjMNCiAgICAgICAgI3NlbGYuYm94U2l6ZXI1LkFkZFdpbmRvdyhzZWxmLmJveFNpemVy NCwgMSwgcGFyZW50PXNlbGYuc3BsaXR0ZXJXaW5kb3cxLCBib3JkZXI9MCwgZmxhZz13eC5U T1AgfCB3eC5MRUZUIHwgd3guUklHSFQgfCB3eC5FWFBBTkQpICAgICANCiAgICAgICAgI3Nl bGYuYm94U2l6ZXI1ID0gd3guQm94U2l6ZXIob3JpZW50PXd4LlZFUlRJQ0FMLCBwYXJlbnQ9 c2VsZi5zcGxpdHRlcldpbmRvdzEpDQogICAgICAgIA0KICAgICAgICAjQWRkIHBsb3QgdG8g c2l6ZXINCiAgICAgICAgc2VsZi5ib3hTaXplcjQuQWRkV2luZG93KHNlbGYuY2FudmFzLCAx LCBib3JkZXI9MCwgZmxhZz13eC5UT1AgfCB3eC5MRUZUIHwgd3guUklHSFQgfCB3eC5FWFBB TkQpDQogICAgICAgICAgICAgIA0KICAgICAgICBzZWxmLkZpdCgpDQogICAgICAgIA0KICAg ICAgICAjY3JlYXRlIGEgcGxvdCBpbnN0YW5jZQ0KICAgICAgICBzZWxmLmF4ZXMgICA9IHNl bGYuZmlndXJlLmFkZF9zdWJwbG90KDExMSkNCiAgICAgICAgDQogICAgICAgICNzZXQgdGhl IHggbGFiZWwNCiAgICAgICAgc2VsZi5heGVzLnNldF94bGFiZWwoJ3gtYXhpcyBsYWJlbCcp DQogICAgICAgIA0KICAgICAgICAjc2V0IHkgbGFiZWwNCiAgICAgICAgc2VsZi5heGVzLnNl dF95bGFiZWwoJ3ktYXhpcyBsYWJlbCcpDQogICAgICAgIA0KICAgICAgICAjc2V0IGdyaWQN CiAgICAgICAgc2VsZi5heGVzLmdyaWQoVHJ1ZSkNCiAgICAgICAgDQogICAgICAgICNzZXQg dGl0bGUNCiAgICAgICAgc2VsZi5heGVzLnNldF90aXRsZShyJ3RpdGxlJywgY29sb3IgPSAn ZycpDQogICAgICAgIA0KICAgICAgICAjdHVybiB0aGUgZ3JpZCBvbiBvciBvZmYNCiAgICAg ICAgc2VsZi5heGVzLmdyaWQoVHJ1ZSkNCiAgICAgICAgDQogICAgICAgIHQxICAgICAgPSBb MCwxLDIsMyw0LDVdDQogICAgICAgIHQyICAgICAgPSBbIm9uZSIsInR3byIsInRocmVlIiwi Zm91ciIsImZpdmUiLCJzaXgiXQ0KICAgIA0KICAgICAgICAjc2V0IHRoZSBheGlzIHRpY2sg bGFiZWxzIGFzIHN0cmluZ3MNCiAgICAgICAgc2VsZi5heGVzLnhheGlzLnNldF90aWNrbGFi ZWxzKHQyKQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAjcGxvdCB0aGUgZGF0YQ0KICAg ICAgICBzZWxmLmF4ZXMucGxvdCh0MSwgJ3JvJykNCiAgICAgICAgDQoNCiAgICAgICAgDQog ICAgZGVmIE9uVG9vbEJhcjFUb29sczBUb29sKHNlbGYsIGV2ZW50KToNCiAgICAgICAgZXZl bnQuU2tpcCgpDQoNCiAgICBkZWYgT25Ub29sQmFyMUJveGNoYXJ0cGxvdFRvb2woc2VsZiwg ZXZlbnQpOg0KICAgICAgICBldmVudC5Ta2lwKCkNCg0KICAgIGRlZiBPbk1lbnUxSXRlbXM2 TWVudShzZWxmLCBldmVudCk6DQogICAgICAgIGV2ZW50LlNraXAoKQ0K --------------030400010604090508040600-- --__--__-- _______________________________________________ Boa-constructor-users mailing list Boa...@li... https://lists.sourceforge.net/lists/listinfo/boa-constructor-users End of Boa-constructor-users Digest |