Merge lp:~raoul-snyman/openlp/songmaintenance into lp:openlp

Proposed by Raoul Snyman
Status: Merged
Merged at revision: not available
Proposed branch: lp:~raoul-snyman/openlp/songmaintenance
Merge into: lp:openlp
Diff against target: None lines
To merge this branch: bzr merge lp:~raoul-snyman/openlp/songmaintenance
Reviewer Review Type Date Requested Status
Michael Gorven (community) Approve
Review via email: mp+9264@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Michael Gorven (mgorven) wrote :

+from songmaintenanceform import SongMaintenanceForm

Imports should always be absolute (unless there's a good reason not to). I see
there are already some relative imports though.

+ if self.LastNameEdit.text() != u'':

I'd use 'if not self.LastNameEdit.text()', since that will handle it being
None or a bytestring.

I'm not a fan of commented out code (bottom of authorsform.py) since you can
always get the old code anyway (yay for version control ;-) ).

+ translate(u'SongMaintenanceForm', u'Couldn\'t add your
topic!'),

I prefer double quotes rather than escaping single quotes inside strings.

Otherwise looks fine.
 review approve

review: Approve
Revision history for this message
Raoul Snyman (raoul-snyman) wrote :

> +from songmaintenanceform import SongMaintenanceForm
>
> Imports should always be absolute (unless there's a good reason not to). I see
> there are already some relative imports though.

I'll do this in the next merge.

> + if self.LastNameEdit.text() != u'':
>
> I'd use 'if not self.LastNameEdit.text()', since that will handle it being
> None or a bytestring.

I'll have to test this out, I'm not sure it'll work with PyQt... AFAIK QLineEdits always return a string.

> I'm not a fan of commented out code (bottom of authorsform.py) since you can
> always get the old code anyway (yay for version control ;-) ).

Oops, I did mean to remove that!

497. By Raoul Snyman

Merged in changes from the songmaintenance branch

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openlp/core/lib/rendermanager.py'
2--- openlp/core/lib/rendermanager.py 2009-07-15 17:33:31 +0000
3+++ openlp/core/lib/rendermanager.py 2009-07-23 20:20:49 +0000
4@@ -53,7 +53,10 @@
5 self.screen_list = screen_list
6 self.theme_manager = theme_manager
7 self.displays = len(screen_list)
8- self.current_display = screen_number
9+ if (screen_number + 1) > len(screen_list):
10+ self.current_display = 0
11+ else:
12+ self.current_display = screen_number
13 self.renderer = Renderer()
14 self.calculate_default(self.screen_list[self.current_display][u'size'])
15 self.theme = u''
16
17=== modified file 'openlp/core/resources.py'
18--- openlp/core/resources.py 2009-07-18 05:43:50 +0000
19+++ openlp/core/resources.py 2009-07-24 22:13:40 +0000
20@@ -2,7 +2,7 @@
21
22 # Resource object code
23 #
24-# Created: Sat Jul 18 06:20:33 2009
25+# Created: Fri Jul 24 23:28:28 2009
26 # by: The Resource Compiler for PyQt (Qt v4.5.0)
27 #
28 # WARNING! All changes made in this file will be lost!
29@@ -52405,6 +52405,569 @@
30 \x1f\x00\xf7\xed\xe4\x0a\x00\x92\x24\x02\x70\x1c\xc7\x3f\xb4\x2c\
31 \x21\xd5\x80\x04\x87\x89\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
32 \x60\x82\
33+\x00\x00\x06\xba\
34+\x89\
35+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
36+\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
37+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x37\x5c\x00\x00\x37\x5c\
38+\x01\xcb\xc7\xa4\xb9\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\
39+\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x06\x2c\x49\x44\x41\x54\x78\
40+\xda\x85\x57\x4b\x6f\x5d\x35\x10\xfe\x6c\x9f\x73\xef\xcd\x0d\x6d\
41+\x4a\x13\xa0\xb4\x85\x22\xa4\x0a\x15\x54\x45\xac\x10\x12\x08\x84\
42+\xd4\x05\x88\x25\x0b\x24\xfe\x01\xac\xf8\x01\xa0\xee\x58\xb1\x62\
43+\xcb\x0a\x21\xf1\x03\x50\x25\xda\x45\xc5\x86\x3d\x0b\xba\x80\x4a\
44+\x05\xa1\xf0\x08\xaf\xa4\x49\x7b\x1f\xe7\xd8\x1e\x66\xc6\x76\x7d\
45+\x4a\x6f\x84\x73\x27\x33\xb6\xe7\x7a\xbe\xf9\x66\xec\x28\xee\xf4\
46+\xe9\xd3\x38\x3c\x3c\xc4\x60\x4c\x58\x36\x58\x46\x49\x5c\x03\x9c\
47+\x62\xf1\x2d\x0b\x6b\x88\xb8\x2c\x36\x8b\x19\x08\xaa\xfd\x3f\x63\
48+\x85\xd3\xda\xf9\xf3\xe7\xaf\x5d\xbc\x78\xf1\xd9\x48\x34\x03\x11\
49+\xb5\xa3\x49\xb8\xf0\xf2\x5b\xd4\x8c\xa6\x32\xa5\x48\xac\x20\x26\
50+\xd8\x56\x2d\x4a\xb5\xae\x89\x11\xd5\x4f\x16\x28\x04\x22\xe7\x4c\
51+\xb8\xb9\xb3\x37\xbd\xf5\xdb\xe1\xc7\x87\x8b\xf8\xe9\xfa\xa4\xb5\
52+\x4d\xeb\xe2\xd9\xe3\x06\xcd\x00\x08\xb1\x3c\xb9\xbd\xbd\xfd\xe2\
53+\xe5\xcb\x97\xdd\x6c\x36\x7b\xb8\x69\x1a\x63\xad\xc5\x72\x31\x07\
54+\x62\x0f\x63\x1d\x1a\xe7\xc0\x6b\x59\x8c\x6a\x63\x44\x0c\xc0\x9a\
55+\x83\xe9\xdc\x1a\xd6\xbc\x27\x40\x4e\x1e\x9b\x84\xcf\xaf\x7d\xe7\
56+\x3e\xf8\x62\xff\xf5\xfd\x1f\x7f\xfe\xf4\xa1\x53\xc7\x71\x7c\x3a\
57+\x46\x87\x33\x05\x40\x1d\x57\xaf\x5e\xa5\x9d\x9d\x1d\xe2\x03\x59\
58+\x2c\x75\x8b\x19\xb6\x5f\x7a\x03\x4f\x5c\x7c\x0d\x2d\x1d\xe0\x60\
59+\x21\xe9\x17\x6f\xa5\x43\x83\x34\x96\xc5\x01\x77\x97\xa4\xc1\xa9\
60+\x78\x90\xac\x9b\xb8\x7f\xb7\x77\xcf\x9d\x3b\xb9\xf9\x8d\x79\x05\
61+\xfe\x54\x1b\x5f\x98\x7c\x85\x59\xff\x17\xcc\x7f\x18\x78\x86\xe5\
62+\x46\xae\x2f\x19\x4e\x91\x62\xc4\xf6\x9b\xef\xe3\xd5\x77\x3e\x44\
63+\xe3\x6f\xe3\x60\x69\x70\x73\xb7\xc7\xb8\x31\x12\xb8\x7c\x51\x83\
64+\x3e\xfd\x88\xc3\xce\x5e\xc0\xa2\xe7\xf5\xb2\x91\x34\x59\x76\x98\
65+\xb8\xb8\xa0\xe5\xde\x05\x5e\xf9\x09\xb6\x15\x8e\xe8\x01\x06\x84\
66+\xca\xe9\x74\xaa\x76\xef\x03\xc2\x72\x81\x3b\xbd\xc3\x1f\xfb\x73\
67+\x9c\x70\x4b\x6c\x4e\x5b\xfc\xd2\x78\x84\xc0\x28\x15\xbe\x91\x60\
68+\x32\x67\x1f\x8f\xc7\xd6\x2d\x83\x88\x70\x16\x8a\x22\xbb\xe8\xe8\
69+\x83\x89\x66\xb4\x15\x32\x37\xfa\xb1\xb8\x7f\x28\x73\xce\x39\x95\
70+\xb2\x30\x19\xb5\xf8\x67\x06\xec\xb1\x58\x8e\xfa\xf8\x46\x8b\x00\
71+\xe9\x01\x07\x93\x7b\xa0\xe5\x1a\xdc\xed\x0c\x3c\x59\xac\x4f\x1c\
72+\x08\xa5\x2f\x74\x5f\xfd\x9c\x35\xc1\x22\x78\xab\xdf\x8e\xcc\x5a\
73+\xc4\x4a\x06\xda\xb6\x05\x53\xaf\xb6\x93\x33\x5c\x83\x11\x53\xfe\
74+\xf7\x9d\x88\xb5\xfd\x88\xa7\x36\x1d\x76\x0f\x22\x22\x25\xea\x65\
75+\xb0\xd2\xac\x6f\xcf\x09\x1b\x6b\x06\x4b\x2f\x7b\xba\x93\x3f\x3a\
76+\x02\x5b\x7e\x18\xcf\xae\x00\x40\xdc\xfd\x70\x2c\xda\xe9\x4e\x18\
77+\x69\x85\x68\x06\x61\xf1\x0b\x03\xd8\xe7\x20\xe7\x36\x1b\x04\x32\
78+\x92\x95\x82\x50\xb0\xd6\x0a\xcd\xf0\xd1\x60\x6d\x64\x15\x95\x4d\
79+\xfb\x64\x8c\x6a\x6f\xad\x88\xae\x13\xcf\x1f\x00\xa0\x8e\x0c\x80\
80+\xc5\xe5\x43\x59\x9a\x56\x6d\xf9\x19\xb7\x16\x3f\xec\x46\x3d\x78\
81+\x7d\x6c\x41\xb8\x17\xe4\x9e\xff\xbc\xe7\xb2\xb5\x65\x4d\x75\xb9\
82+\x96\x5e\x41\x94\x35\xfb\x20\x00\xcd\xba\xd1\xec\x5d\x72\xd2\x7e\
83+\xe0\xb9\x96\xb3\x7e\xf1\x8f\x43\x66\xe1\xa4\x82\xac\x41\x32\x80\
84+\x10\xe5\x86\x28\x63\x65\xbf\x80\xf4\x6c\x07\x99\x67\x59\xd9\x03\
85+\x0a\x80\x88\xb4\x71\x2c\x59\x2d\x47\x09\xa2\xfb\x0c\x66\xd6\x01\
86+\x5d\x00\x4e\x1d\xb7\xd8\x65\x30\xce\xd6\x76\x77\x06\x5a\x8a\x91\
87+\x03\x82\xf6\x49\x3e\x3b\xd5\x3f\xa0\x8e\xa3\x19\x70\xac\x4d\x65\
88+\x20\x07\xaf\xd2\x3a\x61\x01\x5c\x12\x83\x63\x13\x23\xa5\x18\x66\
89+\xab\x0d\x0a\xf1\x63\x5b\x7e\x6c\x7a\x2d\x7b\xde\x0b\x2c\x95\x81\
90+\xa3\x7a\xc0\x7b\x9f\x6f\x81\x00\x68\x87\x0c\x14\xa6\x34\xbb\x3b\
91+\x4b\x60\x3a\xb2\xfa\xe2\x75\x5e\x6f\x5d\xdd\x8f\xe9\x75\xec\x83\
92+\xce\x85\x1f\x69\x40\x65\x20\xe6\xe7\xb4\x59\xc1\x80\xdc\x82\xfa\
93+\xd6\x0b\x80\x26\x31\x40\x19\x79\x79\x5d\x5c\x2e\xc5\xc6\x1a\x94\
94+\x11\x8d\x20\xc1\xf2\x3e\xd5\xeb\x59\xae\x63\xdf\x87\x40\x3d\x27\
95+\x37\x1d\x8f\x41\x47\x00\xd0\x47\xa8\xfc\x91\x61\x53\xcb\xa0\x71\
96+\x85\x46\xa5\xb4\xbe\x80\x42\xf5\xd2\x0b\x00\x94\xc8\xba\x56\xbc\
97+\x08\x0a\x80\x22\xa9\x7f\xdf\xf2\x59\x22\xca\xc8\x0a\x00\x1a\xbc\
98+\xf4\x80\x76\xf5\xa0\x07\xa8\x94\x60\x00\xa0\x31\x09\xc0\x58\x4f\
99+\x92\xce\x4f\x94\x93\x06\x2c\x49\x09\x12\x9d\xf4\xf9\xfb\xf2\x9b\
100+\x56\x95\x80\xca\x9f\x5a\xd4\x86\x52\x00\xb5\x01\x2b\x03\xf9\x93\
101+\x4a\xd1\x1b\x3c\x34\x22\xd1\x0a\xa6\x0b\xc9\xab\xfc\xb6\xc9\xe8\
102+\x29\xad\x69\x42\x91\x68\xe5\x35\xcc\xf4\x9b\x62\xb3\xb8\x6c\x17\
103+\x06\x44\x0f\xbf\x93\x32\x5e\x72\xd0\xb5\x16\x58\x78\x01\x41\xe8\
104+\x0b\x08\x93\x35\xe3\x12\x00\xa5\x09\xed\x8a\x5b\x50\xea\x3f\x04\
105+\x23\x3d\xa0\xce\x85\x15\x94\x03\x2b\x02\xcd\x30\x50\x92\xb1\x96\
106+\xc1\x72\xad\x75\x9e\x00\x27\xd5\x1b\x2a\xf5\x63\xcb\x1c\x71\x0b\
107+\x06\x74\x4b\xf6\xb9\x1f\x90\x7a\xa0\x80\xab\xb1\xcb\x4c\x7d\x7c\
108+\x4c\x00\x1a\x0d\xce\x19\x5a\xc9\xf6\x5e\xb9\xba\xf2\xc5\x54\x8a\
109+\xa3\x7b\xa0\x32\xe0\x06\x25\x28\x0c\xd4\xe0\x25\x9d\x62\xa8\x4f\
110+\xcf\x20\x46\x8e\x60\x48\x1f\x24\x7d\x9e\x33\xf5\x5d\x52\x35\x81\
111+\x46\x0e\x24\xa2\x21\x03\xc3\x86\xd3\xec\x91\x7d\xd4\x4b\x7c\x4d\
112+\x0e\x4a\x15\x45\x59\x33\xaa\x85\x09\xab\x2c\x18\xd2\xfe\x20\x6b\
113+\x2a\x80\xe1\xf8\xff\x1e\xe0\x39\xf4\x55\x8b\x20\x16\x23\x27\x29\
114+\x06\x4a\x6c\x90\x68\x01\xa6\x65\xcd\x3a\xed\xf7\x5e\x12\x10\xf7\
115+\x82\xdb\x64\x00\x54\xba\xf3\x68\x06\x74\xdf\xca\x01\x4e\xd3\x8b\
116+\x91\xd4\xcf\xc4\x28\x5b\x35\x78\x9a\x48\xc0\xa2\x59\xd5\x3e\x8b\
117+\x41\x4a\x47\xa5\x66\x3d\x6a\x28\xdd\x57\x00\x83\x41\xc2\x40\xa1\
118+\xbf\xf4\x00\x01\x95\x81\x42\xbf\x36\x71\x0d\x34\xb8\x6e\xd5\x27\
119+\xeb\xa8\x6b\x0a\xae\xab\xf1\x53\x6f\x54\x00\xb5\x04\x54\x4a\x60\
120+\xf5\x29\x4e\x0c\x84\x18\x04\x05\x2f\xd6\xa6\xab\x99\x8a\x1e\x06\
121+\x1d\x82\xb9\xcf\xb7\xbb\x2f\x5b\x5a\x01\x20\x72\x96\x5d\xd7\xc1\
122+\x7b\xaf\x76\xf0\x01\x9e\x03\x9b\x90\x19\xa0\x1a\x58\x55\xb5\x8f\
123+\x06\x54\x81\xf5\xa9\xa1\x53\x19\xbf\x78\xef\x2c\xec\xd6\xd6\xd6\
124+\x30\xfe\x41\xdf\xf7\x87\x3c\x30\x9f\xcf\x89\x6d\x9a\x2f\x92\xf6\
125+\x21\x50\x60\xf1\x22\x5e\xc4\xb3\xed\x93\x1d\x92\xdd\x8b\xad\x3a\
126+\xad\xf7\xba\xef\x8b\x96\x44\x16\xa2\xbb\xc5\x1c\x6f\xbf\x7b\x26\
127+\xb1\xbc\xbb\xbb\x2b\x9a\xae\x5f\xbf\x8e\x2b\x57\xae\xfc\xcd\xc1\
128+\x6e\x09\x80\xc5\x62\x21\x81\xcd\x7c\xbe\x30\x5e\x12\x37\x8d\x09\
129+\x70\x26\x1a\x91\x46\x25\x64\x1d\xa1\x3a\xed\xc1\xe5\x3d\xb5\xab\
130+\x86\x43\xef\x05\x8e\x01\x35\x13\x7c\xf6\xc9\xaf\xe9\x1a\x32\xcd\
131+\x96\xf5\xf8\xd2\xa5\x4b\xc7\x02\x8f\x8d\x8d\x8d\x6f\xb9\x04\xcf\
132+\x33\x80\xdb\x81\x69\x8f\x7e\x61\xf7\x77\x7f\xc4\xb2\x39\x61\x62\
133+\x3f\x23\x63\x6c\xf9\xdf\x8c\x4a\x29\x07\xaf\xa1\x32\x5c\xcb\x60\
134+\x88\x15\x69\x97\x12\xb9\x3f\xbf\xff\xfa\xf7\x1b\x5f\x7e\xf4\xe8\
135+\x68\xfd\x24\xba\xbb\xff\x1c\xb2\xc3\xd2\x94\xde\x63\x69\xb3\x8c\
136+\x59\xb6\xf2\x1b\x21\xe0\x46\xb6\x19\xb5\x32\xa7\x18\x2c\x11\x03\
137+\x26\x1a\xfe\xfb\x5d\xc0\xc4\xac\x43\x16\x9f\xa5\xcf\x32\x93\x12\
138+\x67\x9f\x2e\xaf\x85\x7f\x01\x1c\x52\xf4\x0b\xb6\xf2\xad\xef\x00\
139+\x00\x00\x22\x7a\x54\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\
140+\x00\x78\xda\x2b\x2f\x2f\xd7\xcb\xcc\xcb\x2e\x4e\x4e\x2c\x48\xd5\
141+\xcb\x2f\x4a\x07\x00\x36\xd8\x06\x58\x10\x53\xca\x5c\x00\x00\x00\
142+\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
143+\x00\x00\x02\x9c\
144+\x89\
145+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
146+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
147+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
148+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
149+\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
150+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
151+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x19\x49\x44\
152+\x41\x54\x78\xda\x85\x90\x49\x68\x14\x41\x14\x86\xff\xea\x9e\x25\
153+\x8a\xcb\x55\xec\x0e\x18\x15\x45\x04\x49\xbc\xc8\xe0\x41\x2f\x7a\
154+\x17\x04\x15\x02\x62\xf0\x62\x60\xd4\x44\xe3\x32\x78\xc8\x21\x46\
155+\x23\x18\x84\x0c\x06\xa2\x04\xdc\xc0\x60\xf4\x22\xb8\x44\x51\xf0\
156+\x20\x9e\x3c\xe8\x68\x8f\x81\xc0\x08\x26\xb8\x1c\x9c\xc1\xc1\xb1\
157+\xab\x7b\xe6\x59\xaf\xe8\x4a\x93\x31\xe0\x6b\xfe\xfe\xbb\xaa\xfa\
158+\xff\xde\xa3\x04\x11\x81\x4b\x08\xd1\xaa\xcc\x51\xd2\x4b\xfc\xbf\
159+\x38\x38\x9b\x30\x2b\xd7\x75\xd7\x7d\x9a\x9e\x7e\xee\xff\xf1\x45\
160+\x84\x60\x28\xf4\xc3\x3b\xfa\x3b\xf6\x44\x32\x49\x4b\x5a\x5a\x76\
161+\xcc\x03\x6c\xdb\x16\x81\x0c\xec\x5f\xd5\x2a\x2c\x4b\x28\xd9\x91\
162+\x5b\x5a\xa2\x19\x90\x48\x10\xaf\x0c\xc0\x8c\xcd\x3f\x2b\x98\xc5\
163+\x00\x76\x0e\x6a\x59\x91\x1b\x00\x7f\x73\xc5\x80\x68\x53\x4d\x12\
164+\x01\x22\x71\xc0\x4c\x60\x14\x03\x84\xb5\x00\x60\x09\x1d\xd6\x10\
165+\x15\x62\xf9\x52\xe2\xfa\xd8\x28\x3a\xf7\xef\x31\xfb\xec\x8b\x4f\
166+\xc0\xdd\xb8\xab\xd1\xc3\xbb\x03\x08\xfc\x00\xdb\x37\x12\x66\xbc\
167+\x65\xb0\xe3\x49\xf4\x79\xf3\x1d\x98\x03\x0d\x7a\x32\x39\x88\x95\
168+\xfe\x63\xf4\x8d\xfc\xc4\xb1\x4e\x07\x5d\x47\xf2\x26\x64\xba\xeb\
169+\xe2\x9d\xb8\x22\xc0\xd4\x83\x21\x2c\xad\x4d\xa1\x67\xf8\x3b\xf2\
170+\xa7\x56\x23\x10\x2e\xda\xdb\x3b\x4c\x03\x33\x05\x2d\x7a\x89\x4f\
171+\xef\x0f\x61\xb9\x7c\x81\xde\x2b\xdf\x30\x76\x6e\x0d\xbc\xaf\x0e\
172+\x0e\x9f\xb8\x65\xba\xce\x3b\x11\xe1\x1f\xc0\xa3\x89\x0b\x58\x11\
173+\xbe\xc6\xf1\xcb\x5f\x30\x7a\xd6\xc1\xc7\x39\x35\x7a\xef\x6d\xa4\
174+\xd3\xe9\x66\x80\xa9\x18\xb0\xb5\xed\x47\x57\xfa\xf7\x33\x74\x5f\
175+\x9c\xc1\x78\x7f\x1b\x3e\xcc\xb9\x38\xd4\x73\x03\xa9\x54\x0a\xa6\
176+\x4a\xa5\x12\xa4\x94\xa8\xd7\xeb\x0c\x6d\x00\x90\x7a\x94\xee\x7d\
177+\xad\xc3\xf7\xee\x8c\xf8\x9b\x37\xad\xa5\x97\xe3\xdb\x28\x7f\x7e\
178+\x2f\x55\xab\x55\x0a\x82\x80\xc2\x30\x24\x15\xa0\x46\xa3\x41\x85\
179+\x42\x41\x7b\xad\x56\xa3\x5c\xee\xcc\x4d\x00\x36\x83\xb3\x1d\x1b\
180+\xf0\x7e\xf7\xae\x9d\xe1\xbb\xb7\xaf\x28\x3f\x78\x80\x2a\x95\x0a\
181+\xa9\x4e\x0b\x00\x5c\x0c\xe0\x70\xdf\xe9\x93\x13\x3c\xbd\xb9\x87\
182+\x55\x42\x88\xd9\x2d\xeb\x53\x9f\xaf\x5e\x3a\xd8\xdc\xd9\x74\xd7\
183+\xf2\x3c\x4f\x66\x8f\x66\xaf\x01\x48\x72\x98\x25\xf8\x95\xc9\x64\
184+\x9c\x62\xb1\x98\x2b\x97\xcb\x93\x00\x42\x25\x11\x09\xec\x46\xd1\
185+\xd9\x1b\x95\x91\x88\xea\x2f\xfb\x5c\xf8\xbd\xf0\xc1\x4d\x21\x00\
186+\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
187+\x00\x00\x02\xe8\
188+\x89\
189+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
190+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
191+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
192+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
193+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\x01\
194+\x3a\xec\xe3\xe2\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x07\x16\
195+\x12\x1e\x22\x20\x34\x3a\x31\x00\x00\x02\x68\x49\x44\x41\x54\x38\
196+\xcb\x85\x90\x4b\x48\x54\x51\x18\xc7\x7f\xe7\xdc\x73\xee\x9d\x3b\
197+\x5a\x93\x2f\xc2\x47\xa2\x3d\xa0\x22\x51\x2c\x48\xa3\x17\x18\x46\
198+\x11\xb5\x29\x42\xd4\x1e\x86\x94\xd0\x32\x23\x88\x5a\x56\x8b\x08\
199+\x37\x19\x84\x2d\x0a\x0b\x2a\x88\xa2\x08\xa2\x45\x24\xe4\x26\x22\
200+\x51\x83\x32\x47\x8a\x92\x5e\x4c\x3a\xa2\x33\x77\xc6\x99\x7b\x5a\
201+\x58\x91\x4d\x8f\xdf\xf2\xe3\xff\xfd\xbe\x87\x30\xc6\x20\x0a\x2a\
202+\xba\x8a\xec\xaf\x07\xe2\xf1\x38\x63\xee\x12\x58\xd1\x48\xc8\x1b\
203+\xa7\x71\xe0\x0a\x37\x97\xef\xe6\x4b\xd6\x7c\x7e\x30\x37\x11\xa5\
204+\xa9\xff\x32\x8f\x8b\x6a\xce\x0e\x0e\x76\xb7\xab\x99\xb2\xbf\x78\
205+\x63\xdd\x26\x8e\x9e\x3c\xfd\x33\xf8\xe1\x62\x27\x23\x3d\x61\xaa\
206+\x87\xba\x58\xd1\x7d\x93\xc0\xc2\xc5\x4c\x7f\xfe\xc4\x8b\xa6\x5d\
207+\xc4\xc6\xc2\xf8\xa1\xc2\x46\xa0\x5d\x18\x63\x10\x42\xdc\xae\x5c\
208+\x55\xbb\x23\x16\x8d\x90\x2e\xa8\x26\x58\xd9\xc4\x74\xda\x67\x43\
209+\xef\x25\x6a\x06\xef\x30\xe5\xe6\x70\xb7\xee\x08\x9b\x7b\x3a\xc9\
210+\x9d\x18\x65\xa0\x7c\x2d\x57\xab\xf6\x8c\x7c\xbc\xd5\xba\x48\x7e\
211+\x1f\xd8\x37\x2f\xbf\x90\x48\x2a\x1b\xdf\xc9\xc1\x0d\x15\x50\x56\
212+\x5a\x42\x6f\xfd\x31\xfa\x57\x36\x90\x1f\x1f\x63\xff\xbd\xe3\x14\
213+\x4d\x8c\x12\x5e\x5a\xcf\xc3\x1d\x67\x48\x26\xbd\x77\x00\x92\x5f\
214+\xf0\x53\x29\x2c\x29\xf1\x8d\x24\x99\x82\xbc\x39\x0e\x7d\xab\x9b\
215+\x11\x4e\x36\x2e\x60\x4b\xc5\xb3\x35\x2d\xd8\x8e\x83\xd6\x9a\x4c\
216+\x81\x9f\xc6\xb2\x2c\x6c\xad\xf1\x52\x92\x7c\x6f\x9c\x83\xd7\xdb\
217+\xc8\x4d\x4c\x32\x95\x57\x46\xc8\x4f\x71\xe8\xc6\x61\x8a\xa3\xef\
218+\x51\xda\xce\x14\x18\x63\x50\x52\xe2\x68\x45\xbe\x37\x46\x73\x57\
219+\x0b\x25\x91\xb7\x0c\x57\x6c\xe5\xf2\xbe\x0e\x1e\x2d\x2b\x25\x1c\
220+\x9c\xe4\xd0\xb5\x56\x96\x4e\x8c\x06\x01\x14\xb3\x30\x58\x96\xc4\
221+\xd6\x9a\xf5\x4f\x3a\x28\x8e\xbc\x61\xb0\x6a\x1b\xf7\x1b\xce\x41\
222+\xda\xf0\xb4\xf9\x21\x00\xe3\x17\x2a\xd9\x39\xf4\xa0\x18\x4e\xcc\
223+\x16\x48\x40\x29\x8b\x60\xc0\xe6\xe5\x96\xbd\xc4\xca\x37\xd0\x57\
224+\xbd\x9d\x2c\x5b\x61\xfb\x06\xdf\x9f\xc9\x59\xeb\x4e\x71\xde\x59\
225+\x30\xdc\xf6\xfb\x06\x52\x4a\x1c\x6d\x93\xed\x06\x48\xb8\xb5\xbc\
226+\x2e\xa8\x25\x0b\x10\xc2\x10\x10\x02\xe3\x83\x0f\x0c\xaf\x6b\xc0\
227+\x1a\x78\x6e\x32\x4e\x50\x5a\x33\x2f\x27\x87\x2c\xd7\xe1\x77\xa4\
228+\x10\x80\xc1\x37\x06\x10\xd8\xf6\xcc\x13\x67\x09\xb4\xa5\x70\x03\
229+\x01\x82\x4e\xa6\x00\xc0\x12\x06\xdf\x08\x0c\x06\xad\x9d\x4c\x81\
230+\x52\x0a\x69\x0c\xae\x63\xf3\x37\x84\x30\x60\x04\xfa\x4f\x1b\x58\
231+\xca\xc2\xf3\x62\x28\x65\xfd\x5d\xf0\x33\xab\x33\x05\x08\x89\x97\
232+\xf0\x48\x24\xa7\xf9\x1f\x42\x58\xb3\x04\x6f\x26\x27\xc6\x89\x4f\
233+\x45\x89\x7c\x8d\xf2\x2a\x3c\xf2\xcf\xe6\x64\x3a\x45\x2c\x1e\xff\
234+\x08\xf0\x0d\xb5\xd2\xd7\x39\x77\xc6\x6b\x4e\x00\x00\x00\x00\x49\
235+\x45\x4e\x44\xae\x42\x60\x82\
236+\x00\x00\x03\x3e\
237+\x89\
238+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
239+\x00\x00\x10\x00\x00\x00\x10\x08\x03\x00\x00\x00\x28\x2d\x0f\x53\
240+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
241+\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\
242+\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\
243+\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\
244+\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\
245+\x46\x00\x00\x01\xb0\x50\x4c\x54\x45\x00\x00\x00\xff\xff\xff\xdf\
246+\x98\x00\xe6\xa0\x0c\xe7\xa3\x10\xdf\x98\x00\xe6\xa2\x0e\xe7\xa2\
247+\x10\xdf\x98\x00\xe5\xa0\x0d\xe3\x9d\x08\xe1\x9e\x01\xe1\x9f\x00\
248+\xe1\x9f\x01\xe1\x9f\x0d\xe1\x9f\x12\xe3\xa1\x11\xe5\xa5\x1a\x00\
249+\x56\xff\x10\x60\xef\x10\x60\xf2\x20\x99\xdd\x30\x80\xce\x50\x8b\
250+\xb1\x50\xb2\xad\x8e\xb2\xa2\x8f\xad\x72\x8f\xb2\x9e\x9f\xbb\x66\
251+\xc3\x4d\x02\xc4\x4f\x01\xcc\x5d\x03\xd4\x69\x02\xdc\x84\x0c\xdc\
252+\x8d\x05\xe1\x90\x09\xe3\x9b\x0b\xe5\x99\x0a\xe5\xa8\x01\xe7\x9d\
253+\x09\xe7\xad\x02\xe7\xae\x01\xe7\xaf\x01\xe7\xb0\x01\xe7\xb0\x03\
254+\xe7\xb0\x09\xe7\xb0\x10\xe7\xb1\x1c\xe7\xb1\x1f\xe7\xb1\x33\xe7\
255+\xb2\x38\xe7\xb2\x40\xe9\xb4\x43\xeb\xb6\x04\xeb\xb8\x45\xeb\xbb\
256+\x20\xeb\xbc\x2d\xec\xb9\x48\xef\xbd\x3a\xef\xc4\x65\xf3\xb9\x17\
257+\xf4\xb8\x14\xf5\xba\x13\xf7\xcd\x0e\xf7\xcf\x0d\xf7\xd1\x0f\xf7\
258+\xd7\x18\xf7\xdc\x61\xf7\xe4\x91\xf7\xe6\xa5\xf8\xce\x11\xf8\xe7\
259+\xbf\xfb\xc8\x1d\xfb\xca\x1b\xfb\xd8\x10\xfc\xcd\x1a\xfc\xfd\xac\
260+\xfd\xd2\x17\xfd\xfa\x60\xfd\xfb\x7c\xfd\xfc\x7e\xfd\xfc\x84\xfd\
261+\xfe\xd2\xfe\xf8\x20\xfe\xf8\x24\xfe\xf9\x37\xfe\xf9\x3b\xfe\xfa\
262+\x47\xfe\xfa\x4f\xfe\xfc\x9c\xfe\xfc\xa3\xfe\xfe\xd9\xff\xd0\x1f\
263+\xff\xd1\x1e\xff\xd2\x1d\xff\xd3\x1d\xff\xd4\x1c\xff\xd5\x1b\xff\
264+\xd6\x1a\xff\xd6\x1b\xff\xd9\x18\xff\xda\x17\xff\xda\x22\xff\xda\
265+\x24\xff\xdb\x19\xff\xdc\x16\xff\xdf\x19\xff\xdf\x41\xff\xe0\x12\
266+\xff\xe2\x3c\xff\xe3\x10\xff\xe4\x19\xff\xe5\x0e\xff\xe6\x0e\xff\
267+\xe7\x0d\xff\xe7\x61\xff\xe9\x20\xff\xea\x0a\xff\xea\x1a\xff\xeb\
268+\x0a\xff\xed\x08\xff\xed\x67\xff\xef\x06\xff\xf0\x06\xff\xf1\x04\
269+\xff\xf2\x5d\xff\xf2\x7c\xff\xf4\x53\xff\xf4\x82\xff\xf5\x03\xff\
270+\xf6\x05\xff\xf7\x07\xff\xf8\x16\xff\xf8\x17\xff\xf8\x6c\xff\xf8\
271+\x87\xff\xf9\x30\xff\xfa\x78\xff\xfb\x7d\xff\xfd\xaf\xff\xfd\xc0\
272+\xff\xfe\xe1\xff\xff\xf2\xff\xff\xf5\xc6\x84\xb0\x01\x00\x00\x00\
273+\x12\x74\x52\x4e\x53\x00\x00\x20\x20\x20\x60\x60\x60\x8f\x8f\x9f\
274+\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xb4\xb2\xe3\xac\x00\x00\x00\xda\x49\
275+\x44\x41\x54\x18\x95\x63\x60\x44\x03\x0c\x8c\x0c\x0c\x0c\x2c\x9c\
276+\x82\x26\xc6\xfc\x1c\x4c\x40\x26\x58\x80\xdd\xd2\xbd\x3f\x3a\xaa\
277+\xdb\xc5\x90\x15\x22\xc0\x66\xdd\x17\xe4\x13\x10\x11\xd2\x54\x6f\
278+\xc1\x0a\x12\x60\x36\xeb\x8d\x0c\xf4\xf7\x0b\x6b\x6d\xac\x28\xd3\
279+\x63\x02\x0a\x70\xb9\x76\x85\x4b\x4a\x87\x05\xcb\x48\x95\xe6\x39\
280+\x71\x00\x05\x04\x7a\x3a\x42\x85\x44\x5a\x9a\x85\x85\x4a\x72\xf2\
281+\x79\x81\x02\x46\xed\x6d\x9d\x62\x12\x8d\x35\xe2\xa2\x95\xc5\x19\
282+\x3a\x40\x01\xc3\x86\x5a\xfd\xea\xaa\x8a\xf2\x22\x2f\xab\xec\x34\
283+\x6d\xa0\x00\x5f\x5d\x81\x9c\x52\x51\x61\x5e\x8e\x8a\xac\x4d\x26\
284+\x0f\x50\x80\xc3\x39\xcb\x4d\x55\x41\x5d\x59\x5e\xd1\xd3\xc3\x01\
285+\x64\x28\x93\x41\x6e\x4a\x8a\xaf\x9d\xad\x77\x5c\x4c\x92\x1a\xc8\
286+\x5a\x06\x56\xf3\xf4\xf8\xf8\xb8\xd8\x98\x98\x64\x53\x56\x88\xd3\
287+\x59\x75\x1d\x33\x13\x13\x52\xed\x35\xa0\x4e\x67\x60\x60\xe2\xe0\
288+\xd1\xd2\xe4\x86\x79\x0e\x0d\x00\x00\x00\x82\x2d\xeb\x05\xb0\x41\
289+\x76\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
290+\x00\x00\x03\x75\
291+\x89\
292+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
293+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
294+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
295+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
296+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\
297+\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x0c\x1e\
298+\x10\x24\x2d\xef\x9e\xe7\xec\x00\x00\x02\xf5\x49\x44\x41\x54\x38\
299+\xcb\x95\x91\x6b\x48\x53\x01\x14\xc7\xff\x77\xbb\x7b\xdc\xeb\xa6\
300+\xab\xe9\x36\x75\x99\xba\xf5\x70\xa5\x58\x1a\x4e\x4d\x66\x05\x16\
301+\x45\xd9\x83\x90\xc4\x04\xa5\x2c\x0c\x8b\x48\xcb\x2c\x34\xb0\x8c\
302+\xe8\x4b\x21\x51\x66\x41\x04\x3d\x3e\x34\xc3\xd4\x32\x34\xa2\xb2\
303+\x22\x53\x33\xb3\xf2\x95\xaf\x34\x67\xee\xa1\x7b\x34\x77\xa7\xbb\
304+\x7d\x52\x0a\xbf\xe8\xf9\x74\x38\xff\xf3\xfb\x7d\x38\x87\xc0\x02\
305+\xeb\x86\x00\x51\x5e\x01\x21\xb7\x68\x85\xa2\x9a\xf6\xf3\xbb\xb0\
306+\x20\xb8\xae\xe2\x8c\xc4\x56\x27\xed\x2e\x5c\x2a\x64\xcb\x78\x7c\
307+\xb6\x8c\xa2\x6a\x38\xf3\x85\xef\xe5\x01\xd3\xa2\x8d\x0f\x3a\xe9\
308+\x72\xb5\x7e\x51\x38\x0c\x9b\x04\xe0\x7a\x33\x8b\x89\xf9\x0a\x4c\
309+\x2f\x42\x0f\xf6\xff\x49\xb8\x39\x8c\x14\xc8\x15\x0a\x70\x87\x8a\
310+\x2c\xa6\xde\xaa\xc8\x79\xc1\x86\x67\xca\xd5\xae\x6f\xd9\x7f\x36\
311+\xe9\x22\xd9\x70\x8d\x8a\xfd\x50\x95\xed\xa9\x7d\xfe\x32\x7d\xce\
312+\x62\x4e\x34\x49\xe4\x44\x71\x85\xff\xce\xfa\xf4\xb4\x97\xbb\x23\
313+\xfb\x6b\x51\xee\x6e\x76\x49\x90\x8a\x7d\x7a\x3d\x9c\xfd\x5e\x11\
314+\x76\x65\x26\x27\x67\x9a\xc2\x9d\x1a\x0d\x25\x51\xd4\xa8\x96\x6b\
315+\x82\xd6\xef\x62\x6e\xbc\xd3\xdf\x3c\x72\xf5\x13\xe0\xaf\xde\x52\
316+\xfa\xb2\x15\x9a\x87\x15\x2d\xd0\x2a\x5d\xf8\xd5\x35\x36\xd1\x56\
317+\xef\x2c\x9e\x23\x58\xac\x50\xe6\xaf\x8d\x4b\x0c\x9e\x9c\xe2\x80\
318+\x71\xda\xb2\x49\xa9\xaa\xcc\xf6\x56\x14\x61\xb1\xd3\x19\xb9\x25\
319+\x6f\x10\x2a\x31\x21\x50\x40\xa1\xe9\xc7\x0a\x1f\xf3\x60\xd7\x65\
320+\x60\x22\xf3\x3f\xc1\xaa\x30\xf5\x92\xb5\x31\x31\xe0\x7a\x49\x61\
321+\x33\x1a\xe0\x1c\xa9\x4c\xe2\xf1\xe9\xc2\xac\xb3\xdd\x70\x3b\xac\
322+\x48\x48\xd6\xe1\xe8\x91\x7c\x70\x48\x01\x0a\x8f\x1f\x0a\x43\x6b\
323+\x0b\x00\x60\xf6\x8d\x52\x6f\xfa\x8b\x87\x99\x84\xc7\xe5\x80\xc7\
324+\x69\x61\x75\xb1\x63\xa7\x2e\xde\x65\xc4\x2d\xdf\x4c\x38\x91\xca\
325+\x62\xdf\xd6\xed\xe0\xf2\x45\xe0\x90\x3c\xa4\xef\xdb\x63\x99\xe1\
326+\x66\x05\x1f\xdf\xbe\x2e\x1e\x1f\xee\x64\xdc\xc6\x01\x08\x5d\x77\
327+\x89\xc6\x1f\x22\xdf\xdb\x4f\xac\xd8\xab\x73\x21\x62\x19\xf7\xcb\
328+\xef\x81\x8e\xdb\x6e\xfb\x08\x5c\xa6\x7e\xd4\xd4\x55\x7f\x9e\x23\
329+\xa8\x6b\xfe\x69\x1c\x75\x0a\xcc\xcd\x6d\xaf\x60\x32\x35\x22\xf7\
330+\x1a\x01\x75\x80\x0b\x29\x89\x4e\x87\xc5\xd8\x97\x62\x36\x5a\x1a\
331+\x26\x46\x06\x31\xd0\xd3\x81\xe6\xc6\xf7\xa2\xd9\x23\x6e\xdb\x91\
332+\xc9\x3b\x90\x91\x9a\xa9\x0a\x09\x3c\x2c\x93\x52\x8a\xf6\x66\x1a\
333+\x6d\x13\x12\x88\x29\x3d\x8e\x25\x9b\x61\x73\x6f\xe8\x0a\x4a\x38\
334+\x59\x29\x71\x74\x84\x0a\x25\xbe\xb0\xda\x1d\x58\xa3\x5e\x96\x75\
335+\xe9\xfe\xa3\x24\xc3\xeb\xf2\x02\x32\x6d\x7f\xda\x39\x6d\x5c\x54\
336+\x81\x58\x24\x00\x49\xf2\xc1\x23\xc7\x21\xa3\x7a\x70\x3e\x27\x08\
337+\x94\x6f\x0a\x1b\x22\x8b\x8e\x5c\xa4\x5e\x41\xb8\xba\x06\x01\xb7\
338+\x13\xc3\xdd\xdf\x31\xd4\xd3\xc3\x17\x4b\xa4\xcb\xd9\xe0\x95\xd7\
339+\x38\xfe\xfe\x7e\xe9\x00\xe0\x9e\xf2\xc0\x6e\xb7\x23\xf7\x74\x09\
340+\xc6\x1c\x32\x84\xc4\x97\x42\xa5\x2d\x20\x08\x1f\x25\xc1\x78\x38\
341+\xf0\x88\x03\xe1\xf1\x56\xc2\x3c\x4d\x41\x16\xb1\x01\xd6\x71\x13\
342+\x84\x14\x2d\xe7\xae\x8b\xdd\xcc\x00\xe0\xda\x6c\x0e\xe2\x43\x63\
343+\x13\x01\xbe\x9c\xd1\x6e\x3c\x68\x9d\x74\x73\x7a\x07\x06\x87\xea\
344+\x1b\x1a\x9a\xee\x8c\x5b\x9d\x96\x51\x3b\xc7\x61\xb0\xb2\x56\x81\
345+\x6c\xa5\x41\x1e\x16\xdf\xde\xd9\xfd\xb3\xf2\x71\x6d\x6b\xde\x5f\
346+\xe0\xbc\x32\xda\x82\x1f\x79\x91\x00\x00\x00\x00\x49\x45\x4e\x44\
347+\xae\x42\x60\x82\
348+\x00\x00\x02\x9a\
349+\x89\
350+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
351+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
352+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
353+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
354+\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
355+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
356+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x17\x49\x44\
357+\x41\x54\x38\x8d\xa5\x93\x3d\x68\x13\x71\x18\xc6\x9f\x37\xcd\x11\
358+\x9b\x8f\x5e\x92\x4b\x52\xf3\x71\xf9\x20\xc1\xd2\x52\x3b\x1c\x15\
359+\xc1\x82\xb5\x08\x35\x89\x10\x35\x38\x0b\x4e\x82\x60\x47\x89\x5b\
360+\xea\xd4\x41\x08\x14\x1d\x1c\xd2\xbd\x08\xa5\x5c\x16\x17\x1d\x0c\
361+\x38\x88\x20\x68\x87\x22\xd8\x56\x93\xab\x62\xed\xa9\x6d\x4c\xc9\
362+\xe5\x7a\x7f\xa7\x0b\x67\xda\x45\xfa\x8c\xff\xf7\x7d\x7e\x3c\x2f\
363+\x0f\x7f\x62\x8c\xe1\x24\xb2\x9d\xc8\xdd\x0f\x58\x21\x92\xde\xdc\
364+\xbe\xf5\x7d\x95\xe3\x72\xfd\x8b\xab\x1c\x97\xfb\xf0\xe0\x7e\x73\
365+\x85\x48\x3a\x16\xb0\x4c\x24\xf9\x27\xc7\x5e\x9d\x19\x1d\x0b\x46\
366+\x8b\x59\xf9\x19\x51\xd6\x32\xcb\x85\xb3\xd3\x72\x3c\x18\x8c\x9e\
367+\xbe\x32\x5d\x5f\xb6\x40\x7a\x00\x0d\x58\x4a\x4e\x9e\x77\x1d\x34\
368+\xb7\x11\x4b\x8e\xda\xc3\xf9\x4b\xb5\x2a\x51\xbe\x42\x74\xcd\x79\
369+\xf9\x42\x4d\x1c\x99\xb0\xb7\xb7\x1a\xc8\xcc\xe6\x9d\x1a\xb0\x64\
370+\xfa\xec\x16\x40\x69\xad\xfe\xb2\x96\x1c\x3f\x67\x07\xb3\x21\x10\
371+\x4e\xd9\x37\x2e\xb6\xe4\x5d\xc3\xa0\xd9\x44\xc6\xa6\x36\x14\x0c\
372+\x38\x1d\xf8\xf6\xe2\xbd\xae\x01\x25\xd3\x47\xd6\x16\x9e\x12\x65\
373+\x87\x47\xa2\x72\x4c\xcc\x70\x86\xc6\x60\xf3\xba\x71\xc0\x0c\x38\
374+\x3b\x06\x1c\x89\x08\xb6\xde\xbe\xee\x2a\xef\x3e\x16\xee\x30\xf6\
375+\xfc\x58\x00\x00\x2c\x12\x65\x23\x99\x61\x39\x12\x8c\x72\x87\x1a\
376+\x81\x1c\x0e\xe8\xac\x83\xaf\xca\xa7\xee\xce\x97\x5f\x85\x39\x8b\
377+\xf9\x9f\x13\x4c\x75\x00\x68\x5a\x17\xfa\xfa\x3a\xf4\x9f\x6d\x10\
378+\x80\x01\x9f\x13\xcc\x73\x0a\x9d\xfe\xe5\xfe\x04\x0b\x44\x59\x31\
379+\x21\xc8\xe3\xfb\x1d\x0e\x6a\x0b\x6d\xbf\x1b\x04\x60\x50\x6d\x01\
380+\x7e\x37\xd6\x3c\x83\xdd\xc6\xe7\x9d\x42\xc9\x92\xa2\xd7\xc2\x3c\
381+\x51\x4e\x4c\x45\xe4\xa9\x96\xce\x09\x6a\x0b\x2e\xc1\x8b\x27\x3c\
382+\xcf\x16\x79\x2f\x73\x05\x7c\x10\xd4\x16\xa6\xfe\x1c\x72\x62\x3a\
383+\x2e\x2f\xf0\xfc\xd5\x23\x00\x16\x0f\x3d\x9e\x19\xf2\x72\xa1\xdd\
384+\xdf\x70\x07\xfc\xa8\x78\x79\x43\xd8\x54\x8a\xbe\xcd\xe6\xcd\x0a\
385+\xcf\x1b\xee\xa0\x80\xd0\x0f\x15\x33\x9e\x21\x8e\x17\xc5\x47\xbd\
386+\xd8\x8c\x31\x30\xc6\x50\x06\xa4\x6a\x22\xb6\xa7\x48\x67\x59\x39\
387+\x9d\xd2\xe7\x80\xeb\xe6\xec\x2e\x50\x9c\x4f\xa7\x74\x45\x9a\x60\
388+\xd5\x44\x6c\xaf\x0c\x48\xe6\xac\x07\x30\x21\x0f\x33\xd1\x8d\x7b\
389+\xc0\x0d\xeb\xbb\x09\xa9\xe7\x73\xdb\x56\x33\x63\xec\x68\x8d\xff\
390+\xab\x13\xff\xc6\xbf\x7b\x12\xeb\x18\x4c\xd6\x48\xe1\x00\x00\x00\
391+\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
392+\x00\x00\x03\x44\
393+\x89\
394+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
395+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
396+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
397+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
398+\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
399+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
400+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\xc1\x49\x44\
401+\x41\x54\x78\xda\x85\x91\x5f\x48\x53\x61\x18\xc6\x9f\xef\xec\x6c\
402+\x3b\xee\xbf\x6e\x39\x19\x6e\x2a\x88\x88\x18\x4c\xbd\x48\x28\x09\
403+\xed\x26\xa2\x40\xc2\xba\x91\xba\x09\xeb\xb6\x6e\x44\x4a\xca\x75\
404+\x11\x14\x98\x52\x44\x24\x19\x91\x41\xa6\x54\xa2\x58\x5b\xe5\x85\
405+\x98\x62\x64\x13\xff\xa4\x35\x4d\xd1\xa1\x96\xe6\x64\x67\x9b\xfb\
406+\x7b\xce\xd7\x11\xa7\x04\x81\xfe\xe0\xbb\xf9\xde\xe7\x79\xbf\xe7\
407+\xfd\x5e\x50\x4a\xf7\x3d\x78\x82\x93\xd9\xce\xec\xaf\x55\xa3\x55\
408+\xbe\xac\xf6\xac\x29\x3c\x42\xe5\x4e\x6d\x7f\xf3\x1d\x9c\xb7\xbf\
409+\xb5\x0b\x0d\x53\x0d\x34\x2e\xc4\x69\xc3\x74\x03\xb5\xbb\xec\x02\
410+\x6e\xe3\xdc\x56\x9d\xc1\x1e\x10\x42\x94\xd0\xa3\x9e\x67\x78\x66\
411+\x70\xa5\x0b\x14\x22\x16\x37\xba\xc0\xb2\x3c\x03\x0d\x6e\x12\x89\
412+\xbd\x5f\x07\x94\x78\x86\x50\x2c\x11\xa3\xa2\x28\xd2\x7f\xc1\x73\
413+\x04\x01\x68\x18\xec\x8d\x00\x82\x00\xd7\xa5\x40\x85\x73\x5b\xea\
414+\xf8\x42\x50\xfa\x81\x00\x14\x7e\x00\xdc\x7e\x0d\x64\x98\xc6\x63\
415+\x51\x01\x71\x46\xdc\xbe\x70\x6e\x02\x23\x31\x88\x98\x95\xb2\x01\
416+\x3c\x49\x46\xc5\xfd\x9a\xf2\x52\x8d\x31\x63\x30\xb8\x19\x66\xcc\
417+\x66\xa3\xf7\xec\xb5\x56\x5b\xf2\x1f\x74\xb8\x82\xeb\xe6\x7c\xf9\
418+\x85\x53\x9e\x3c\xdd\x3a\xc2\x31\x67\x64\xae\x25\xfc\x00\xb5\x92\
419+\x37\xba\x9b\x40\x93\x6e\x71\xa9\x35\x29\x8c\xd9\x92\x8d\x54\x73\
420+\x96\xb5\xe5\xd2\xd1\x83\x90\x90\x44\x3c\x9a\xe0\xa8\x74\xe6\xea\
421+\x0c\x43\xb3\x8c\xd6\x2d\xe7\xea\xf8\xc3\xc7\xb6\xcc\x90\x60\x91\
422+\x44\xcd\x52\x79\x45\x79\x19\xb8\x8c\x3c\xf8\xfd\x41\x8c\x0d\xb8\
423+\x4e\x03\x98\x80\xc4\xc5\x12\x95\xc6\x60\x30\x30\x67\xaa\x1d\x50\
424+\x6a\x4c\xe8\x68\x7b\x6a\x43\x12\x76\x77\x58\x99\xf8\x8b\xc8\xd8\
425+\x1c\x06\x22\x12\xb1\x10\x7c\x7f\x3c\x2f\x90\xc4\x62\x62\xa3\x95\
426+\xc7\x4f\xd0\x9c\x82\x22\xc2\x65\xe4\xa3\x6c\x66\x7c\x03\x49\x76\
427+\x47\xf8\xf4\xee\x65\xc5\xd4\xd8\x18\x12\xc1\x35\x0c\x0f\x0c\xc4\
428+\x6e\xf5\xae\x79\x90\xe4\x86\xd3\xef\x0b\x87\x02\x5e\x2a\xc4\x11\
429+\x5e\x9d\x87\x7b\xdc\xbd\xf2\x5f\x83\xe6\x61\x2c\x32\x46\x2b\x3a\
430+\x5e\xf7\x42\xa5\xd3\xc6\x3b\x3b\x3b\x15\xd8\xc1\xe1\x60\x78\x1f\
431+\x3f\x34\xff\x6d\x14\x9f\xfb\xba\x31\xe7\x99\xe4\x90\x84\x94\x94\
432+\x94\xc8\xeb\x6b\xaf\x7e\x31\x9a\x6d\x85\x66\x93\x4e\x16\xf4\x79\
433+\xa1\x35\x59\xb1\xb2\xb4\xb0\xb9\xbe\xfc\xb3\x59\xc9\x2f\x65\xda\
434+\x8a\x8f\x54\xa7\x25\xbc\x32\x4e\xad\x43\x4f\x7b\x07\x46\x07\xfb\
435+\x50\x73\xaf\x47\x1c\x7f\x75\xb7\x8e\xbc\xe9\xee\x5f\x2b\xb2\x17\
436+\x98\x52\xf5\xaa\xed\x48\x0c\x41\x22\x21\x20\x21\x88\xd8\x0c\x86\
437+\xc1\xac\x0e\x43\x30\xe4\x41\x1b\x98\x00\xa2\x51\xb4\x36\x36\x61\
438+\x61\x61\x12\x97\xdb\xdc\x88\x4e\xbf\x8f\xb3\x46\x63\xba\x89\x65\
439+\x09\x24\x3d\x08\x03\x88\x22\x05\xdd\xd9\x8c\x5e\x0d\x7f\x20\x13\
440+\xca\x14\x0d\xa8\x68\x01\xd4\x14\x19\x85\x87\x10\xe2\x52\x11\x0a\
441+\xf0\x90\x36\x23\x27\x8d\x0f\x3b\x47\x72\x6d\xd6\xa2\xf4\x03\x7a\
442+\x46\x26\x57\x40\x88\x0b\x80\x8c\x48\x09\xe2\x74\x79\x69\x3d\x3c\
443+\xf7\x7d\xf2\x63\xbe\x4d\x5d\xac\xd5\xaa\xd3\x94\x9c\x4a\x11\x89\
444+\x46\x84\x68\x24\xc2\xff\x5e\xf5\x2d\xb8\xfa\x7f\xd4\xfe\x05\xde\
445+\x59\x81\xd8\xd5\x95\x4d\x17\x00\x00\x00\x00\x49\x45\x4e\x44\xae\
446+\x42\x60\x82\
447+\x00\x00\x03\x08\
448+\x89\
449+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
450+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
451+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
452+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
453+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\x01\
454+\x3a\xec\xe3\xe2\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x07\x16\
455+\x12\x1d\x10\xc3\xce\x38\x72\x00\x00\x02\x88\x49\x44\x41\x54\x38\
456+\xcb\x7d\xd3\x5f\x68\xcd\x61\x1c\xc7\xf1\xf7\xf3\xfb\xfd\x9e\xdf\
457+\xf9\xb3\xe1\xcc\x76\xc4\xb6\x46\x9a\xb2\x86\x49\x5a\x93\x38\x22\
458+\xe4\x62\x2d\xc6\x26\x7f\xd7\xb4\xdd\x68\x29\x8d\x5a\x4a\x8c\x18\
459+\xa5\x56\xb8\xd8\x86\x44\x49\x09\x0b\x29\x65\x4b\xb8\xd0\x2e\x36\
460+\x84\x0e\x93\x8d\x19\x33\x9d\x63\xff\xce\x39\x3b\xff\x7e\x8f\x8b\
461+\xad\xd5\x69\x87\xef\xe5\xf3\x7c\x9e\x57\x9f\x7a\xfa\x0a\xa5\x14\
462+\xc2\xbd\xf4\x4a\xa6\xe9\x3f\x10\x0a\x85\xf8\xe3\x58\x04\x4b\x76\
463+\xf3\xaf\xc9\x19\xed\xa3\xda\xff\x9c\x40\xfa\xbc\xa7\x6b\x33\x54\
464+\xb1\x98\x00\xf2\x9f\xed\xda\xb2\xd2\x73\xf4\xf8\x59\xfe\x37\x56\
465+\x3c\xcc\x82\x9f\xdb\x68\xac\xf0\x92\xf5\xc3\x02\x43\x7f\x3c\x01\
466+\x08\xd1\x5a\xb0\x72\x55\x49\x70\xd8\x47\xdc\xbd\x02\x67\xc1\x1e\
467+\xa2\x71\x8b\x48\x4c\x4d\x3d\x36\x0d\x8d\xea\xd5\x26\x9e\xdc\x00\
468+\xfb\x0f\x9e\xa5\x6c\xae\x97\xac\xae\xe0\x2b\x63\xf2\xfe\xb5\x2b\
469+\x63\x5e\x49\x9f\x2f\xcc\x4c\x5b\x1a\x8e\x59\x6e\xb2\x52\x25\xfd\
470+\xfe\xf0\x14\x50\x9c\xd3\xce\xba\xd9\x9f\xe8\xf7\x97\x73\xad\xa5\
471+\x89\xf0\x97\xfa\x58\x68\x63\x6b\xb9\x91\x50\x31\x16\x43\xd7\x34\
472+\x2c\xa5\x11\x89\x41\xfa\x0c\x1b\x63\xe3\x71\xe6\xa7\x7c\xa5\x6e\
473+\xfd\x00\x5b\x6b\xde\x30\xf8\xfb\x25\x2d\x0d\x9b\x69\x7e\xb7\xf3\
474+\xf3\xcd\xfa\xfb\xdf\x12\x01\x2b\x8e\xae\xeb\x98\x52\x32\x1e\x83\
475+\x99\x76\x1d\x8d\x30\xe7\x36\x75\x72\xe1\x46\x3f\x9f\x7a\x46\x69\
476+\xaa\x73\xd2\xf1\xc3\x46\xbb\x37\xf0\x0b\x20\x01\x50\x4a\x61\x68\
477+\x1a\x36\x39\x71\x1c\x89\xc3\xd1\xc2\x36\x7a\x7a\x87\xb8\x7d\xaf\
478+\x93\xa2\xec\x30\xbd\xdd\x41\x1e\xa6\x94\x22\x8d\x1e\xa6\x01\xa0\
479+\xd0\x75\x0d\x53\x4a\xec\x63\x3d\x14\x2e\xec\x63\xb9\xcb\xcb\xe6\
480+\xba\x37\x2c\x74\xf9\xc8\xb2\x39\x68\xcd\x78\x81\x2e\xc0\x90\xdf\
481+\xa7\x03\x1a\x60\x18\x3a\x4e\xbb\x49\x9e\x7a\xcf\xc1\xfc\x47\xec\
482+\x3b\x11\x24\x1a\x18\x61\x4d\x89\x87\x8e\xec\x8b\x38\x01\x21\x04\
483+\xd2\xb4\x25\x01\x34\x0d\x9b\x34\x49\x75\xd8\xa9\xca\x6d\xa6\xf1\
484+\x56\x2a\x9d\x1f\x86\x39\x59\xa1\xd8\xe0\x29\xc6\xdb\x6d\xc7\x02\
485+\x04\x60\x26\x03\x0c\x29\x71\xa5\xa5\x71\x29\xaf\x92\x97\x6f\x63\
486+\x5c\x7d\x30\xc2\x0e\x4f\x98\xec\xdc\xc5\x9c\xef\x2f\x23\xc5\xa9\
487+\xb0\x94\x02\x04\xa6\x69\x4e\x07\xa4\x6e\x70\xa4\xb0\x1b\x9f\xaf\
488+\x83\xda\xcb\x69\xe4\x66\x86\x29\x5d\x07\x4f\x44\x03\x76\x69\xa2\
489+\x0b\x85\xa5\x04\x0a\x85\x94\xc9\x1a\x18\x06\xca\x5d\xc4\xdb\x61\
490+\x17\x33\x1c\x77\x39\x54\xe2\x67\x50\x55\x62\xa5\x2e\xc3\x31\x99\
491+\x11\x42\x81\x12\xc8\x64\x0d\x74\x43\x47\x1a\x43\xcc\x71\x7c\xe6\
492+\x74\x4d\x0e\xf6\x8c\x72\xda\xc4\xa9\x84\x90\x98\xca\xca\x24\xdf\
493+\x28\x34\x6a\xeb\xce\x70\xec\xf0\x76\xba\xdc\x77\x18\x8f\x44\x81\
494+\x68\xd2\xc5\x12\x42\x4f\x00\x7a\xc7\x46\x86\x08\x05\x86\x89\xe6\
495+\xed\xe5\xfa\x60\x15\x0c\x7e\xfc\xe7\x56\x46\xe2\x31\x82\xa1\xd0\
496+\x00\xc0\x5f\x20\x50\xec\x78\x0e\xd2\x32\x80\x00\x00\x00\x00\x49\
497+\x45\x4e\x44\xae\x42\x60\x82\
498+\x00\x00\x03\x5a\
499+\x89\
500+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
501+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
502+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
503+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
504+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\
505+\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd8\x0c\x1e\
506+\x10\x24\x17\x29\x92\x3e\x5e\x00\x00\x02\xda\x49\x44\x41\x54\x38\
507+\xcb\x85\x91\x6b\x68\x53\x77\x18\xc6\x7f\xff\x73\x92\xe6\xe4\xd6\
508+\xc6\x76\xb6\xcd\x22\x5d\x9a\x6a\xd3\x75\xb8\x3a\x2f\x73\x08\xf3\
509+\xf6\x71\x6a\xf1\xcb\xa0\xd3\x2a\x4e\x36\x90\xae\x0e\x44\x90\x51\
510+\x44\x44\x05\x41\xbc\xd4\x0f\xb2\xb9\x82\x83\x6d\xf4\x83\x28\x88\
511+\xa8\x14\x8b\x46\xa5\xa2\xeb\x5a\x34\xf1\x96\xd4\xac\xd5\xb4\x5d\
512+\xbc\xf4\x92\xd8\x6a\x93\x9c\x9c\x73\xf6\xc1\x45\xac\x52\x7d\xbe\
513+\x3d\xef\x0b\x3f\x9e\xf7\x7d\x60\x0a\x1d\x02\xcf\x01\xb8\x7c\x08\
514+\xfc\xaf\xcf\x9b\xc1\x7d\x10\x2e\x35\x43\x35\x80\x34\x15\xc0\x0e\
515+\x6b\x15\x58\xac\x40\xe0\xd8\xff\x90\xdf\xc0\xad\x40\x40\x81\x25\
516+\x76\xd8\xf4\x4e\x80\x15\xf6\xd9\xe0\x80\x05\xdc\x12\x04\xfe\x80\
517+\x65\x12\x04\x2c\xe0\xb7\x41\xab\x02\x5b\x00\x04\xef\xd0\x71\x40\
518+\x87\xfd\x06\x6c\xcd\xcd\x04\xb4\xca\xb0\xfe\x6b\xd0\xde\x0b\x00\
519+\x38\x07\x1f\x66\xe0\x0e\xe0\x02\xd4\x3c\xf8\xec\xab\x97\x9e\xb7\
520+\x4e\xd8\x3c\xdf\x24\x36\xcf\x93\x95\x9c\xef\x00\xb7\x19\x2e\xda\
521+\xc0\x65\x83\xb0\x03\xcc\x0a\xb4\x77\x40\xd5\x6b\x89\x5e\x6a\xc7\
522+\xea\xea\x6a\xab\xab\xf4\x6c\x45\x65\x75\x99\x86\xfa\x4b\x45\xd3\
523+\xd1\x3d\x2a\x04\x74\xf0\x4b\xd0\x7a\x6c\x8e\xb2\xd7\x3b\x2a\xda\
524+\xec\x13\x86\x67\xc1\x50\x2a\x9e\xaf\xb3\xbc\x06\xc2\xa6\x1c\xa0\
525+\xb0\x74\xc6\x4f\x73\x17\x2d\xf5\xa6\xb2\x12\xa9\xf4\x58\xc3\xa3\
526+\x02\xb3\xcb\x9d\x54\xfd\x02\x5a\xcf\xfb\xe4\xef\xe3\x16\x73\xaf\
527+\x7d\xa6\xad\xa4\x3f\xbf\x8c\x44\xd7\x2d\x77\x5d\x7f\xaa\x11\x68\
528+\x7c\x15\xbf\xfd\x70\x43\x60\x3c\x72\xc1\x98\x18\xb8\x69\x3c\x0d\
529+\xb5\x19\x87\x1b\x96\xd7\x46\xa0\x3e\x02\xf2\x8f\x5f\x16\xcc\xda\
530+\xb3\x75\x95\x31\xfe\x4f\x87\xf1\xfc\x61\x97\xb1\x6d\xc5\xec\x70\
531+\x2f\x98\x26\xfd\xa0\x28\xdf\x76\x4b\xcf\xa4\xd0\xd3\xe3\x48\xe9\
532+\xb1\x8c\xac\xbe\xb8\xe1\x87\x3f\xfd\xa0\x15\x97\x94\x26\xd7\xad\
533+\xac\x55\xe5\x3c\x07\xb2\xc9\xc4\x37\x1b\xea\x7a\x7d\x90\x9d\x04\
534+\xf8\xfb\xea\x95\xdd\x89\xc1\x48\x26\x3b\xdc\x47\xac\x27\x78\xba\
535+\xb1\xe5\x7a\x7f\x6e\xb7\xfd\x44\xe4\xc9\xe8\x40\xdf\xaf\xea\x78\
536+\x9c\xf4\xf0\x03\xda\xda\xcf\x04\xdf\x6a\xa1\xbd\xbb\x7f\xe8\xf1\
537+\x84\x65\xa4\x33\x18\x66\x38\x65\x8e\xbd\x59\xe7\xd0\xd3\x78\x57\
538+\x32\x1e\xe3\x61\x34\x4c\x77\xe7\x35\xc7\xab\x16\x56\xd4\x6e\x34\
539+\x7f\xf7\xed\x9a\x8d\x15\xe5\x9e\x4d\xd3\x0b\x2d\x73\x06\xa3\xb7\
540+\x29\xff\x64\xa1\x9a\x4c\x24\xce\xde\x0d\x85\x9a\x9d\xcf\xc3\x35\
541+\x33\x6a\x96\x36\x3a\xc7\xc2\x3e\x73\xfe\x07\xf2\xbf\xb1\x3e\x4e\
542+\xfd\xfe\x73\xa6\x6e\xd7\x89\x07\x8f\xae\xb4\x34\x99\xea\xd7\xd5\
543+\xef\xfc\x62\xd1\xbc\x26\xa7\xc3\x02\x42\x50\x55\xe4\x01\x81\xb9\
544+\xd8\x51\xb0\xda\x3a\xad\xa4\x56\x8d\x22\x0a\xbd\x95\x22\xdd\x13\
545+\x03\x75\x82\xc1\xfb\xf7\x18\x88\x46\xf3\x9c\xae\xa2\x4a\xc3\x5b\
546+\x75\xc4\xe4\x76\x4f\x5f\x0f\xa0\x66\x75\x24\xc0\xc8\x45\x13\x02\
547+\x4d\x43\x12\x05\x1f\x91\xd1\x65\x74\xa7\x07\x64\x89\x11\xcd\x4a\
548+\xf1\xa7\xcb\x78\x96\x18\x46\xb1\xda\x4a\xc4\x91\x96\x53\x3f\x7c\
549+\xec\xf7\xae\xb2\xdb\x94\x99\x86\x61\x14\x6a\xba\x21\x49\x42\xa4\
550+\x85\xe0\xf1\x68\x72\x2c\xd4\x13\xec\xea\x2e\xf3\xf9\x3e\xb7\x58\
551+\xf2\xca\x65\x59\x38\x75\xdd\xd0\xd4\xac\xf6\x64\x64\x68\x24\x14\
552+\xfc\xab\xf3\xe4\x7f\x6e\x1a\x12\x34\xb5\x87\x20\xf1\x00\x00\x00\
553+\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
554+\x00\x00\x02\x7e\
555+\x89\
556+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
557+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
558+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
559+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
560+\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
561+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
562+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xfb\x49\x44\
563+\x41\x54\x38\x8d\x95\x92\x4f\x6b\x1a\x51\x14\xc5\x7f\xef\xa9\x38\
564+\xcd\x7a\x16\x5d\x14\xa4\xd0\x65\x9b\x92\x45\x05\x91\xe2\xae\xed\
565+\xb6\x76\xd7\x64\x95\x0f\x60\x3f\x44\x0b\xfd\x43\xc1\x76\x15\x42\
566+\x20\x10\xb2\xf6\x3b\xe8\xc2\x8a\x28\x86\x5a\x90\x11\x0c\x74\x21\
567+\xb3\x10\xd4\x2c\x26\xe3\x8c\xa3\x73\xbb\x88\x63\x75\x48\x0a\x3d\
568+\x70\x37\xef\x71\xce\x3d\xf7\xde\xa3\x80\x47\xc0\x2e\xff\x87\xae\
569+\x88\x0c\x00\x92\xc0\xee\x68\x34\xaa\x84\x22\x68\xad\xd1\x5a\xa3\
570+\x94\xda\x2a\x80\xcb\xc1\x80\x76\xbb\xcd\xde\xde\x1e\xd9\x6c\xf6\
571+\x0d\x30\x00\xd0\x00\xa1\xfc\xbb\xdd\xd5\xd5\x15\xc3\xe1\x90\x83\
572+\x83\x03\x5a\xad\x16\x85\x42\xe1\x69\xf4\xa7\x01\x12\x09\x4d\x22\
573+\x91\x58\x3b\xd0\x5a\x93\xd8\xa8\x45\x10\x60\x9a\x26\x3b\x3b\x3b\
574+\x1c\x1e\x1e\x92\xcb\xe5\xde\x95\x4a\xa5\x27\x00\x0a\x28\x8e\x27\
575+\x93\x0a\x22\xa8\x48\x40\x29\xc2\x30\xa4\xd3\xe9\xe0\xba\x2e\x8e\
576+\xe3\xe0\x38\x0e\xfb\xfb\xfb\x18\x86\x81\x65\x59\xfd\xa3\xa3\xa3\
577+\x7b\xae\xeb\xe6\x14\x50\x9c\x4c\xa7\x15\xe0\xaf\x83\xd5\xdc\xa9\
578+\x54\x6a\xed\x2c\xda\x45\x84\x5e\xaf\x57\x2b\x97\xcb\xa3\x64\x44\
579+\xbc\x4d\xe0\x36\x62\x1c\x37\x02\x11\x41\xa9\x9b\xd2\x9a\xe5\x72\
580+\x49\xbd\x5e\xe7\xfa\xfa\x7a\x6b\x84\x74\x3a\x8d\x65\x59\xfd\xe3\
581+\xe3\xe3\x87\xc0\xdb\x24\x80\x8a\x3b\xd0\x37\x4b\xcd\xe7\xf3\x28\
582+\xa5\xb0\x6d\x1b\xdb\xb6\x49\xa7\xd3\xf8\xbe\xcf\xd9\xd9\xd9\x7d\
583+\x11\x79\x7e\x72\x72\x62\x27\xa3\x4d\x46\x37\x8f\xc6\x61\xe3\xcd\
584+\x30\x0c\xc6\xe3\x31\x9e\xe7\x71\x7a\x7a\x4a\xa3\xd1\xf8\x5e\xad\
585+\x56\x7f\xad\xcf\x48\x8c\x1c\x0f\x92\x69\x9a\x64\x32\x19\xce\xcf\
586+\xcf\xc9\x66\xb3\x52\xab\xd5\x2e\xb6\x72\x10\x27\xc4\x53\xe8\x79\
587+\x1e\x4a\x29\x5e\xbc\x7a\xc9\x8f\x66\xb3\x09\xfc\xdc\x5c\x64\xd1\
588+\x75\x5d\xf1\x3c\x4f\xe6\xf3\xb9\x04\x41\x20\x8b\xc5\x42\x96\xcb\
589+\xa5\x84\x61\x28\x41\x10\x48\xb7\xdb\x95\xf9\xdc\x97\x0f\x5f\x3e\
590+\xf7\x81\xc7\x80\x12\x11\x44\x64\x25\x30\x9b\xdd\x29\xe0\x38\x8e\
591+\x0c\x2e\x2f\xe5\xfd\xa7\x8f\x7d\xe0\x19\xa0\x23\x72\x24\xf0\xda\
592+\x9d\xcd\x42\xdf\xf7\x25\x08\x82\x2d\x01\x11\x91\xc9\x74\x1a\x7e\
593+\x2d\x7f\x6b\xac\x3a\x6f\x91\x45\x04\x05\x3c\x58\x29\xdf\x95\x98\
594+\x70\x35\xf3\x6f\x89\x5a\x6e\xe0\x0f\xd5\xf2\x24\x09\x1c\xd8\x9f\
595+\xe3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
596 \x00\x00\x02\x7c\
597 \x89\
598 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
599@@ -52447,6 +53010,73 @@
600 \x00\xa1\x08\xe9\xb1\xf7\x59\xbc\xf9\xfe\x43\xfb\x09\xe6\x93\x6b\
601 \xcb\xcb\x17\x39\x68\xfe\x00\x58\x95\xf6\xff\x16\xb1\xc6\xc2\x00\
602 \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
603+\x00\x00\x04\x0e\
604+\x89\
605+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
606+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
607+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
608+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
609+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x37\x5c\x00\x00\x37\x5c\x01\
610+\xcb\xc7\xa4\xb9\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x07\x16\
611+\x12\x14\x17\x8c\x68\x16\x98\x00\x00\x03\x8e\x49\x44\x41\x54\x38\
612+\xcb\x4d\x8e\x5b\x4c\x9b\x65\x00\x86\xdf\xef\xfb\xfe\xf6\x6f\x4b\
613+\x4f\x6b\x29\x42\x39\x8f\x8d\xb0\x8c\x11\xad\x81\xad\x90\x11\xdd\
614+\x16\x06\x86\x45\x13\x33\xa3\x31\x31\x63\x1e\x61\x73\x26\x8b\x87\
615+\x18\x4f\x89\x17\x66\x17\x64\xcb\x12\x13\x8d\x17\xba\x78\x41\x62\
616+\xb2\xc5\x71\xb1\x6c\x03\x36\xb6\x0a\x09\x68\x6d\x44\x91\xb1\x60\
617+\x38\x15\x28\x07\x01\x5b\x7a\xfa\xfb\xff\xdf\xf7\x79\x31\x31\xbc\
618+\x57\xef\xc5\x9b\xe7\x7d\x48\xf0\x64\x23\x74\x55\x03\xc9\x50\x90\
619+\x2c\x43\xf4\x76\x06\x6a\x89\xe1\x68\x09\x7a\xde\xac\x1c\xfc\xfd\
620+\xbd\xcd\x53\x4d\x13\x71\xaf\x63\x6c\x61\x62\xf3\xfb\x96\xce\xda\
621+\x08\x6f\xba\xec\x87\xce\x7b\x28\xd0\xf5\xf6\x95\xd8\x04\x8b\x86\
622+\xe6\x71\x63\xe8\x47\xd8\x6d\x56\x22\x34\x60\x57\x85\x75\x77\x53\
623+\x47\xd5\xf5\xdd\xcb\x6b\xa7\x1d\xc3\xd3\x79\xae\x89\x85\x0a\xe5\
624+\x44\xe9\x21\x47\xad\xeb\x95\x58\xef\xa4\x52\x3a\x32\xdb\xcd\x80\
625+\x27\x2d\x80\x78\x67\x73\xf8\x26\xfb\xe9\xe1\x30\x16\xc2\x09\x0c\
626+\xdd\xbe\x8f\xb9\x07\x09\x56\xdf\x59\x7a\xd5\x51\xa9\x1c\x4e\x1d\
627+\xc8\x37\xd4\x8c\x41\xdc\x91\x65\x62\x1f\x9a\x47\xae\xce\xa5\x54\
628+\x7d\x17\x79\x5a\xdd\xca\xe5\x9b\x81\x9e\xa5\x86\x92\xae\x78\x4b\
629+\x91\x20\xc1\xb3\xf5\x20\xaa\xa4\x5c\x93\x82\x1a\xac\xd9\xd5\x40\
630+\xef\xab\x56\xc6\x29\x55\xa8\x62\xa6\xa4\xee\xca\x5f\xd8\xd3\x1b\
631+\xc5\x76\x62\x7b\xdd\xd1\xd2\xa9\x7f\x2a\xef\xca\x26\xf1\x15\xd9\
632+\x27\x95\x5c\x5e\x1a\xd4\x26\x21\x05\x80\xa4\xb9\x2c\xc5\x0d\xa4\
633+\x34\x09\xc6\x28\x31\x49\x86\xc8\x71\x17\xaa\xfb\x17\xa1\xa6\x05\
634+\x04\x23\x08\x9f\x78\x2c\x7e\xfe\xe2\x39\x09\xa2\xca\x06\xff\x20\
635+\x48\xe3\xd9\x00\x68\x9e\xa0\x52\x87\xa0\x9a\xe9\x88\xad\x21\x77\
636+\x47\xb1\x13\x61\x56\x14\xe2\x8c\x73\xd2\xfe\xe1\x03\xb8\x16\xb3\
637+\xd8\x2c\xb6\xc0\xbb\x98\x45\xce\xc6\xb2\xce\x34\x7f\xe2\xba\xac\
638+\x7b\xd8\x4d\x5a\xa5\x62\x8d\xed\x42\x72\x45\x17\x93\x43\x14\x36\
639+\x28\x23\xcd\xc1\xe4\x78\x9e\x97\xd6\xda\x37\x0c\xd1\xfa\xd1\x9f\
640+\xc4\xb1\x98\xc5\xf4\x91\x7c\xdc\x7a\xb9\x44\xec\xbd\x3c\x4d\xdd\
641+\xcb\x39\x4b\x7d\x96\xdf\x7d\x41\x1d\x3f\x36\xd6\x4d\x26\x68\xec\
642+\x5a\x25\xea\x3e\xd6\x71\xb2\xd7\xa0\xad\xd7\x32\x69\xbe\x64\xba\
643+\xe8\xc9\xb3\x22\xd0\xb3\x42\x7c\xd1\x0c\xd6\xda\x0a\x31\xf4\xd9\
644+\x3e\x61\x29\x73\xd2\x99\xf7\x0f\x8c\x9c\x5f\xad\x51\xfb\x8b\x2d\
645+\x45\xf6\x9c\xe8\x4a\xf4\x39\x40\x02\x2d\x41\x38\xb8\x13\x91\x3b\
646+\xeb\xd8\x42\x18\x00\xe8\x07\x03\x6d\x7d\xe5\xd2\x75\xb4\xe8\xb7\
647+\x65\x31\xd9\x6e\x27\x4b\x1b\x29\xf0\x24\x21\x6b\xc3\x7a\x9b\xbd\
648+\x10\xb7\x04\x40\x0d\x0d\xc2\xfb\x6b\x0d\xc8\x8b\x4f\xbd\x8a\x85\
649+\x30\x50\xf3\xf9\x12\xcc\x1e\x49\x39\x72\x62\x2b\x26\x8e\x06\x9f\
650+\x2d\x1f\xb0\x9b\x9c\x72\x4d\x5f\x12\xab\x89\x2d\x16\x9f\xd6\x6f\
651+\x7e\xf3\x52\xf5\x33\x53\x58\x25\xd5\x64\x56\x02\x9f\xa2\xe1\xb9\
652+\x2f\x40\x00\xa0\xf1\xf8\x61\x24\xa6\x6d\x58\x99\x5f\xc7\x9a\x16\
653+\x06\xe0\x36\x7f\x72\xaf\x39\x52\x50\xe2\xdc\x9f\xd1\x33\x7a\x2c\
654+\xb6\x6e\x5a\x09\xa3\xd3\x55\x41\xbe\x96\x42\xd2\x5c\x5a\x88\x82\
655+\x8e\x10\xc6\xdd\xe7\x1e\x01\x6a\xe9\x19\x3c\xde\x15\xc5\xe9\x77\
656+\x8f\x61\xb4\x7f\x86\xaa\xaa\x59\x84\xfa\x22\x57\xab\xf7\x57\x3e\
657+\x9f\xd5\x72\x46\x55\x45\x8d\x72\xe9\xc2\x97\x87\x74\x43\x1f\xcd\
658+\xf7\x79\xa9\xc2\x14\x61\xc4\x3d\x18\xfb\xe3\xde\x23\xc0\xce\x9c\
659+\x79\xe3\x2d\xe6\xf3\xf9\xf8\xcf\xe1\x5f\xbe\x6d\x3c\x78\xb0\xc3\
660+\x5f\x5c\xce\x8b\x8a\xfd\xbc\xad\xbd\xb5\x16\xc0\x94\x55\xb5\x90\
661+\x8c\x96\x95\xdb\x7b\xba\x5d\xfc\xfe\x42\xbc\xfe\xda\x29\x08\x66\
662+\x60\x23\xf1\x37\xc0\x44\x32\xad\xa7\xa0\x58\x29\x99\x5b\x98\x11\
663+\x00\x0c\x00\xc8\x19\x59\x94\x96\x16\xff\x7f\xb8\xd3\x80\x01\x30\
664+\x33\xc6\x2c\x9c\x73\x56\x50\xe0\x2b\x0b\x04\x02\x3f\xb8\x5c\xee\
665+\x3d\xb3\xb3\x73\x17\x46\x47\x47\x2e\xa9\xaa\x0a\x4d\xd3\x32\x00\
666+\x34\x00\x3a\x00\xc9\x76\x00\x4c\x00\x6c\x52\x4a\x07\xa5\xd4\x9b\
667+\x4c\xa6\xa4\x6a\x56\x87\x3d\x5e\xcf\x60\x28\x14\x1a\xe0\x9c\x3b\
668+\x39\xe7\xdb\x7b\xfe\x9f\x91\xfc\x17\xb9\x74\x8f\xb8\x3b\x01\x1d\
669+\xdc\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
670 \x00\x00\x02\x43\
671 \x89\
672 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
673@@ -52486,7 +53116,7 @@
674 \xce\x01\x59\x40\xf1\xfb\xc4\xc0\x91\x88\xc4\x30\x9e\x9f\xaf\xc9\
675 \x06\x51\x54\x9d\xd3\x94\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
676 \x60\x82\
677-\x00\x00\x02\x9c\
678+\x00\x00\x02\x9e\
679 \x89\
680 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
681 \x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
682@@ -52494,42 +53124,199 @@
683 \x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
684 \x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
685 \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
686-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x19\x49\x44\
687-\x41\x54\x78\xda\x85\x90\x49\x68\x14\x41\x14\x86\xff\xea\x9e\x25\
688-\x8a\xcb\x55\xec\x0e\x18\x15\x45\x04\x49\xbc\xc8\xe0\x41\x2f\x7a\
689-\x17\x04\x15\x02\x62\xf0\x62\x60\xd4\x44\xe3\x32\x78\xc8\x21\x46\
690-\x23\x18\x84\x0c\x06\xa2\x04\xdc\xc0\x60\xf4\x22\xb8\x44\x51\xf0\
691-\x20\x9e\x3c\xe8\x68\x8f\x81\xc0\x08\x26\xb8\x1c\x9c\xc1\xc1\xb1\
692-\xab\x7b\xe6\x59\xaf\xe8\x4a\x93\x31\xe0\x6b\xfe\xfe\xbb\xaa\xfa\
693-\xff\xde\xa3\x04\x11\x81\x4b\x08\xd1\xaa\xcc\x51\xd2\x4b\xfc\xbf\
694-\x38\x38\x9b\x30\x2b\xd7\x75\xd7\x7d\x9a\x9e\x7e\xee\xff\xf1\x45\
695-\x84\x60\x28\xf4\xc3\x3b\xfa\x3b\xf6\x44\x32\x49\x4b\x5a\x5a\x76\
696-\xcc\x03\x6c\xdb\x16\x81\x0c\xec\x5f\xd5\x2a\x2c\x4b\x28\xd9\x91\
697-\x5b\x5a\xa2\x19\x90\x48\x10\xaf\x0c\xc0\x8c\xcd\x3f\x2b\x98\xc5\
698-\x00\x76\x0e\x6a\x59\x91\x1b\x00\x7f\x73\xc5\x80\x68\x53\x4d\x12\
699-\x01\x22\x71\xc0\x4c\x60\x14\x03\x84\xb5\x00\x60\x09\x1d\xd6\x10\
700-\x15\x62\xf9\x52\xe2\xfa\xd8\x28\x3a\xf7\xef\x31\xfb\xec\x8b\x4f\
701-\xc0\xdd\xb8\xab\xd1\xc3\xbb\x03\x08\xfc\x00\xdb\x37\x12\x66\xbc\
702-\x65\xb0\xe3\x49\xf4\x79\xf3\x1d\x98\x03\x0d\x7a\x32\x39\x88\x95\
703-\xfe\x63\xf4\x8d\xfc\xc4\xb1\x4e\x07\x5d\x47\xf2\x26\x64\xba\xeb\
704-\xe2\x9d\xb8\x22\xc0\xd4\x83\x21\x2c\xad\x4d\xa1\x67\xf8\x3b\xf2\
705-\xa7\x56\x23\x10\x2e\xda\xdb\x3b\x4c\x03\x33\x05\x2d\x7a\x89\x4f\
706-\xef\x0f\x61\xb9\x7c\x81\xde\x2b\xdf\x30\x76\x6e\x0d\xbc\xaf\x0e\
707-\x0e\x9f\xb8\x65\xba\xce\x3b\x11\xe1\x1f\xc0\xa3\x89\x0b\x58\x11\
708-\xbe\xc6\xf1\xcb\x5f\x30\x7a\xd6\xc1\xc7\x39\x35\x7a\xef\x6d\xa4\
709-\xd3\xe9\x66\x80\xa9\x18\xb0\xb5\xed\x47\x57\xfa\xf7\x33\x74\x5f\
710-\x9c\xc1\x78\x7f\x1b\x3e\xcc\xb9\x38\xd4\x73\x03\xa9\x54\x0a\xa6\
711-\x4a\xa5\x12\xa4\x94\xa8\xd7\xeb\x0c\x6d\x00\x90\x7a\x94\xee\x7d\
712-\xad\xc3\xf7\xee\x8c\xf8\x9b\x37\xad\xa5\x97\xe3\xdb\x28\x7f\x7e\
713-\x2f\x55\xab\x55\x0a\x82\x80\xc2\x30\x24\x15\xa0\x46\xa3\x41\x85\
714-\x42\x41\x7b\xad\x56\xa3\x5c\xee\xcc\x4d\x00\x36\x83\xb3\x1d\x1b\
715-\xf0\x7e\xf7\xae\x9d\xe1\xbb\xb7\xaf\x28\x3f\x78\x80\x2a\x95\x0a\
716-\xa9\x4e\x0b\x00\x5c\x0c\xe0\x70\xdf\xe9\x93\x13\x3c\xbd\xb9\x87\
717-\x55\x42\x88\xd9\x2d\xeb\x53\x9f\xaf\x5e\x3a\xd8\xdc\xd9\x74\xd7\
718-\xf2\x3c\x4f\x66\x8f\x66\xaf\x01\x48\x72\x98\x25\xf8\x95\xc9\x64\
719-\x9c\x62\xb1\x98\x2b\x97\xcb\x93\x00\x42\x25\x11\x09\xec\x46\xd1\
720-\xd9\x1b\x95\x91\x88\xea\x2f\xfb\x5c\xf8\xbd\xf0\xc1\x4d\x21\x00\
721-\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
722+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x1b\x49\x44\
723+\x41\x54\x78\xda\x7d\xd1\x4f\x48\x14\x51\x00\xc7\xf1\xef\x9b\xf7\
724+\xe6\x9f\x9a\xba\xea\x96\x66\x50\x87\x82\x82\x22\xf0\xa0\x75\x08\
725+\x2a\x85\x40\x32\xf1\xd0\x45\xbb\x75\x0e\xf5\xd2\x25\x0a\x3c\x75\
726+\x8f\x8e\x9d\x0c\xba\x75\x50\xea\xe4\xa1\xa2\x53\x1d\x54\x84\xb2\
727+\x32\x63\xc1\x64\x3b\xe4\xfa\x27\x75\x76\xd7\xd9\xf7\xda\xb7\x41\
728+\xec\xb0\x5b\x1f\x18\x06\x86\xe1\x3b\xbf\x99\x11\xc6\x18\x44\xfa\
729+\xdc\x93\xa3\x5e\xee\x76\x14\x45\x6c\x86\xa7\xe0\xec\x18\x35\x1a\
730+\xb7\x48\x0d\xcc\x71\xb5\xef\x38\x99\x6c\x96\xf9\x85\x8d\x17\xfa\
731+\xfe\xe2\x90\xa2\x42\x9f\xbc\xdc\x3f\xc0\xdd\x07\x0f\xa9\x27\x36\
732+\x07\x8c\x2d\x0d\x32\x72\xe6\x06\xa3\x5d\xa3\xbc\x69\x7e\x45\x7b\
733+\xeb\xcb\xeb\xe2\xa9\xb8\xa3\xb0\x7e\x7e\xdc\xfa\xb0\xdc\xc2\xcd\
734+\xc1\x2b\x94\xd2\x3d\x34\x9c\xbf\xc5\x41\x49\x53\x8c\x0d\xd6\xee\
735+\xe1\xd7\x14\x2f\xac\x33\x97\x9d\x65\xa4\x7d\x80\xf5\xec\x5b\xa2\
736+\x78\x05\x91\x17\x93\x8a\x3f\x16\x5b\x3b\xba\x86\xd7\x36\x0a\x34\
737+\xfb\x29\xc2\x96\x34\xdd\x4d\x2e\xeb\xb9\x02\xd6\x5e\x7a\x87\xa9\
738+\xce\x29\xc6\xfb\xc6\xb1\x7a\x8f\xf4\x63\xb5\x7d\x6a\xeb\x72\xa8\
739+\xa2\xe3\x18\xe9\x38\x68\xe3\x94\x9f\x0e\xed\x87\x7c\x7c\x57\xd1\
740+\xa8\x4f\x30\xf1\x75\x82\xd3\xcf\x05\xef\xd6\x66\xb8\x37\x7b\x91\
741+\x4b\x33\x82\xcd\xf4\xe6\x5a\x32\xa0\x4b\x48\x29\xf1\x5c\x97\x7c\
742+\xec\x10\x94\xcf\xbe\xe7\xd2\xb9\x33\x48\xe0\x1f\x23\x13\xc2\x5e\
743+\x09\xb2\x21\xbc\xf7\x00\x8f\x47\x89\x80\xfd\x23\xca\x71\xec\x53\
744+\x2b\x47\xb1\x24\xe8\xb0\x2b\x94\x4f\xcf\x97\x69\xc2\xdd\x3e\xae\
745+\xcd\x8f\xf2\xec\x57\x86\x70\x69\x68\xd5\x0c\x9b\xc7\x8a\x04\x83\
746+\x94\x8e\x5d\x50\x75\x05\x9a\x02\x59\x8e\x75\xd3\xbb\x3a\x8d\xe5\
747+\x08\x58\x59\x5e\xf8\x0e\x90\x08\x38\x80\x52\x92\x86\xc0\xa3\x9a\
748+\xaf\x04\x9e\x36\x68\x4d\x85\x10\x02\xd7\xf3\xa9\x0d\x54\xe6\x7b\
749+\x34\x85\x01\xd5\x84\x30\x04\x42\x60\x34\x68\x40\x00\x5e\xbd\x80\
750+\x72\x5d\x5a\x53\x29\x1a\x43\x9f\x24\x3b\x5b\x00\x06\x6d\x0c\x20\
751+\xca\x01\xaf\x36\xe0\x4a\x45\x18\x04\x34\xf8\x3e\xf5\x48\x61\x03\
752+\x02\x83\xc1\x75\xeb\x2d\x50\x0a\xc7\x18\x42\xdf\x23\x29\xf9\x3a\
753+\x18\x81\x5b\x6f\x81\x54\x92\x7c\x7e\xdf\x7e\xc8\x7f\x07\xfe\xde\
754+\xeb\xd6\x06\x10\x0e\xf9\x42\x9e\x42\xf1\x80\x84\xba\x4b\x64\x22\
755+\x90\xd9\xdd\xd9\x22\xda\xdb\x66\x23\xb7\xcd\xe7\xd5\x6f\xfc\x4f\
756+\xb1\x14\xb3\x1f\x45\x3f\x00\x7e\x03\xd0\x4f\xb5\x1d\xf3\xfe\x36\
757+\xa3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
758+\x00\x00\x09\xa4\
759+\x89\
760+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
761+\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
762+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x37\x5c\x00\x00\x37\x5c\
763+\x01\xcb\xc7\xa4\xb9\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\
764+\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\x09\x16\x49\x44\x41\x54\x78\
765+\xda\xa5\x95\x79\x6c\x5c\xd5\x15\xc6\xbf\x7b\xef\x7b\xf3\x66\x73\
766+\xc6\xc6\xf1\x6e\x27\x71\xbc\x60\x67\x77\x20\x61\x29\x90\x36\x6d\
767+\x21\x45\xec\x81\x28\x08\x68\xd5\x4a\x48\x2d\xfc\x51\x84\xaa\xaa\
768+\x82\xf2\x47\x05\x14\x24\x4a\x1b\xa9\xa5\x11\x34\x40\x49\x89\x13\
769+\x12\xf6\x00\x21\x25\x90\x06\x48\x20\x6e\x20\x8b\x21\x4e\xbc\xc4\
770+\x8e\xb1\xe3\x2d\xce\x78\xec\xf1\x2c\xef\xbd\x7b\x4f\xef\x1b\xd9\
771+\xd5\x28\x1a\x03\x12\xbf\xf1\xf7\xce\xbd\xb2\x47\xe7\x3b\xdf\x9d\
772+\x3b\x66\xc8\xc1\x86\xfb\x1e\xc2\x7d\xcf\xfe\x0d\xf9\x91\x02\x30\
773+\x00\x0d\xf3\xe6\xe2\x70\xcf\x11\xa4\xfa\xa2\xf0\x88\x84\xab\x8b\
774+\xcb\x6b\xf3\x6b\x22\x45\x81\x4a\x9f\xdf\x9c\x25\x5d\x65\xc7\x46\
775+\x92\x7d\xfd\x27\x63\x6d\xd1\x89\x8e\x41\x68\xea\xd6\x5c\x88\x65\
776+\x35\x75\x18\x1d\x49\x02\x8c\xc1\x99\x14\xb8\x72\xbd\x85\x3f\xde\
777+\xf9\x26\xb2\x61\x38\x8f\xdf\xac\xff\x15\x0e\x9c\x3b\x89\x54\x22\
778+\x0d\x27\xa1\x90\xc7\xc2\x28\xfc\xf9\x20\x36\xdf\xdb\x8a\x8b\x2f\
779+\x5c\xb2\xa0\x66\x65\xd1\xba\xca\xfa\x82\x1f\xe7\x17\x87\x6a\x02\
780+\x79\x66\x44\x98\xdc\x04\x48\x25\x27\x9d\x89\xe8\xe0\x64\xd7\x99\
781+\x8e\xe8\xae\xfe\xd6\xf1\xe6\xa3\xdf\x6f\x39\xb9\x72\x72\x01\xea\
782+\xe3\x4d\x48\xf7\x87\xe0\x04\x13\x30\x4f\x57\x81\xed\x7a\x0a\xdb\
783+\x57\x8c\x03\x67\x66\x30\xb0\xfe\xf6\xdb\x20\x99\xc2\xe0\xe9\x18\
784+\xa2\xfd\x49\x7c\xd1\xb3\x1f\x0b\xb0\xc6\x37\xeb\x9a\x89\xbb\x16\
785+\xfc\xa0\xec\x81\x8a\xfa\x82\xf9\xba\x31\x11\x57\x4c\xc2\x81\x22\
786+\x17\xc4\x14\x38\xe3\xe0\x24\x28\x15\x97\x6c\xa0\x23\xd6\x79\xfa\
787+\xf0\xb9\x47\x6b\x0b\xab\x9b\x3f\x7c\xa6\xcb\xae\x5c\x35\x0b\x3e\
788+\xc3\x42\x68\xb8\x0a\x21\x11\xc2\xf3\x9f\x3e\x86\x69\x04\xb2\xb8\
789+\xe1\x96\xeb\x11\x4f\xda\x48\xc5\x09\xf1\x5e\x85\x23\xdd\x7d\x58\
790+\x17\xf9\xa9\x21\xaf\xed\xbd\xbf\xe9\xc6\xca\x27\xca\x16\x44\x8a\
791+\x94\xa9\xf3\x56\x0e\x1c\x65\xc3\xd5\x72\xa4\x03\x57\xcb\x71\x6d\
792+\xd8\x32\x4d\xcc\x22\xca\x2f\x0f\x16\x06\x0a\xcc\xab\x4f\xf7\x0e\
793+\xa4\x56\xff\xb2\xfa\xb3\xe7\x63\x3b\xe4\xbe\x8a\xb7\x50\xd1\xe0\
794+\xc7\x5f\x57\x3f\x89\x1b\x9d\x9b\x70\xb2\xf3\x04\x3c\x0c\x64\x13\
795+\x20\x54\x86\x0a\xb0\xf1\xd2\x27\x50\xbe\x73\x29\x43\x7a\x98\xba\
796+\x1b\x0e\xde\xdc\xf0\xa3\xd9\x0f\x59\x95\xcc\x8a\x25\xc7\x15\x17\
797+\x5c\x0f\xcb\xc1\x19\x88\x31\xfd\xc3\x00\x10\x30\xf5\xe4\xae\x74\
798+\xb5\x29\x29\xf3\xab\xfd\xc1\x72\x19\x79\xf0\xe0\x07\xdd\x3d\xec\
799+\x5f\x6c\x07\xc2\xb3\xf1\x52\xcb\x9d\xf8\xf5\x9e\xeb\xf1\x65\x65\
800+\x2c\x77\x02\x17\x36\x34\x62\xc0\x19\xc5\x53\x1f\x6d\x45\x6c\x9f\
801+\x1f\x75\xb3\xea\x4b\x8a\xaf\xe3\x1b\x02\x75\x7c\x7e\x32\x9d\x94\
802+\xc4\x95\x70\x49\x91\x9e\x99\x39\x90\xcc\x65\x4a\xaf\x08\x12\x9e\
803+\xa0\x77\x04\x2d\xd2\x7b\x6e\xbb\xae\x34\x22\x22\x90\x8c\xdb\x45\
804+\xc5\x89\xb9\xbb\xac\x9e\xbc\xc9\xf6\x53\x51\xa4\x53\x02\x10\x84\
805+\x8e\xcf\x4e\xe5\x48\xc0\x90\xd8\x37\xf6\x01\x6a\xab\x6b\x59\x28\
806+\x5f\x91\x3f\xe4\xbf\x8a\x95\xb3\x95\x71\x77\x92\x4c\x32\xb8\x4d\
807+\x0e\x18\x13\x8c\x0b\x06\xc6\x19\xbc\x0a\xa6\xd7\x40\x46\x1c\x99\
808+\x35\x83\x86\x14\x71\xe2\x80\x51\x89\x4b\x65\x91\x73\x49\x7c\xe1\
809+\xf0\xce\x3e\xd7\xc7\xf6\x7e\x78\x92\x6e\xff\xde\x5a\x68\x72\x18\
810+\xe0\xc0\x3d\xe3\xf7\xa3\xf9\x4f\x7f\xa6\x89\x02\xa0\xfc\xe1\x0b\
811+\x56\x3a\x7e\x12\xcc\x35\xa4\x4b\xae\x50\x20\x70\x2f\x7e\xc9\xa0\
812+\x7d\x64\xea\x34\xa4\xc5\x3c\x79\x86\xc8\x33\xa0\x0b\x91\x72\x2d\
813+\xe9\x67\xc5\xea\xe2\xc4\xed\xdd\x3b\x89\x80\x27\x9e\xfe\x3b\x5a\
814+\x12\x7b\x72\x1b\x20\x05\x0c\xd9\x23\x88\x2e\x24\xbc\x07\xf0\x07\
815+\xef\x5b\x56\x91\xf6\x02\x75\x25\xa4\x92\x70\x95\x82\x10\x1c\x5c\
816+\x4b\x78\x26\x78\xb6\x01\x02\x11\x41\x11\xc0\x74\x35\x20\x74\x65\
817+\xe4\x78\xef\x0b\xf2\xca\xd8\x9d\x40\x0c\xa0\xd6\xbf\xb4\xc2\x25\
818+\x99\xdb\x00\x97\x1c\x48\x19\xf0\x18\x87\x86\x28\x73\xc2\x92\x98\
819+\xf7\x04\x13\x94\x89\x5d\x64\x2a\xc0\xd9\xb4\x01\xaf\x31\x81\x3c\
820+\x29\x05\x0e\x8e\xa0\x30\x61\x72\x03\x49\x96\x86\xe3\x23\x41\x8c\
821+\x3c\x43\x70\x03\x69\xc0\x97\xdb\x40\xc6\x75\x71\xa2\x02\x21\x62\
822+\x48\x00\xea\xb2\x7b\x96\x0f\x59\x86\x02\x37\x00\x1f\x13\x99\xe9\
823+\x0d\x21\x90\x31\xc1\x39\x18\xb4\xa6\xa6\x57\x9e\x48\x41\x4a\x05\
824+\x1f\x0c\x84\xb8\x1f\x82\xf1\x4c\x7a\x13\x69\xd5\x57\xf2\x1f\x86\
825+\xf9\xef\x83\xcd\x49\xd7\x52\xbb\x3a\x3b\x43\x02\x8c\x63\x63\xd3\
826+\x23\xa8\xbd\xb7\x8c\xb9\x93\x44\x2c\xe1\x3b\x1c\x00\xc1\x08\x78\
827+\xc3\x32\x12\xc2\xbb\x81\x99\x23\xc8\x4c\xef\xbd\xb2\x0d\x48\xc9\
828+\x20\xb9\x36\xa9\x0c\x10\x40\x4a\x48\xe1\x26\x95\xeb\xf4\x8b\x43\
829+\xc1\x47\xe7\xc1\xba\xc0\xc0\xe3\x65\x0f\x60\xad\x73\x73\x6e\x03\
830+\x92\x14\x56\x4c\x5c\x81\x64\x87\xc4\xd0\x51\x20\x39\x37\xf4\x71\
831+\xe1\x55\xb2\x2b\x5c\xc6\x6b\x48\x42\xe9\xc9\x99\xd7\x5c\xfb\x00\
832+\xa6\xdb\x4f\x9f\xbf\x22\x38\x1c\x70\xc8\x5b\x03\x92\x24\x81\x13\
833+\xb3\xcf\xd2\x17\x89\x8f\x22\x07\xe3\x51\x0b\xf9\x4d\x44\xab\xe6\
834+\xcd\x01\x09\x85\x69\x38\xb2\xf0\x22\x9b\x3f\xbb\x14\x75\xe7\x2e\
835+\xa2\xeb\xe9\x13\x2c\xe9\xd9\xd3\x95\xec\x10\xaf\x58\xcc\x40\x38\
836+\x68\x52\x28\x60\x42\x8b\x82\x01\x1f\x82\x7a\x1d\xf0\x0b\xf8\x3d\
837+\x59\x02\xa6\x99\x31\xe6\xa5\x48\x5a\x10\x3e\x40\xa5\x25\xe2\xed\
838+\x6c\x7b\xf4\x9d\xdd\x03\x15\xff\xde\x87\xcb\xcc\xd5\x28\x0c\x87\
839+\x01\x97\xe5\x4e\xc0\xa3\x4c\x71\x6c\x9b\xb5\x17\x81\xc6\x26\xd6\
840+\x7d\x22\x45\x8b\xe6\xf9\xff\x59\x7a\x91\x7b\x6b\xfe\x12\x73\x3e\
841+\xb9\x4c\x99\x86\xc9\x0d\x6e\x00\x04\xb8\x70\x32\xb7\x43\x29\x42\
842+\x8a\x48\xef\x38\x4c\xa6\x31\x98\xf2\x07\xc1\x47\x3a\x71\x6c\x64\
843+\x57\xa8\xb9\xf7\xd9\xe5\xb0\x1a\x4d\x1c\x28\x7d\x0f\xbe\xae\x21\
844+\xcc\xab\x58\x96\xfb\x9b\xf0\xf8\x97\x6d\xa8\x59\xbc\x08\x8b\x17\
845+\xce\x41\xd5\xfb\x6b\x50\xdf\xfe\x16\x4b\xfd\xee\xc4\x88\xf3\x74\
846+\x95\x51\xbe\xd4\x77\x4d\x28\xe2\xa3\xa0\x08\x20\x6c\x84\x99\xdf\
847+\xb0\x20\x04\x03\x17\x00\x63\x80\x94\x04\xc7\x06\xa0\x38\x85\x82\
848+\x06\x43\x42\xe1\xf4\x4e\xf5\xfb\x81\x8b\x3f\xde\x5b\x7f\x6d\x8a\
849+\xed\x3e\xdb\x81\xd3\x2b\xf6\x21\xdf\xaa\x40\xf3\xd6\x6d\x33\x27\
850+\x00\x02\x86\xdb\x93\x68\x9f\xfb\x1a\x46\x1b\x1a\x69\xc8\x19\x42\
851+\x04\xd6\xe6\xaa\x4b\xe4\x0d\x8d\xd7\x84\x56\x99\x76\x40\xf9\x29\
852+\xcc\x88\xc8\x9b\x16\x69\x00\x29\x46\x48\xeb\xb8\x85\xae\xa6\xc1\
853+\x29\xe8\xe7\xfc\xab\x83\x6a\x57\xeb\xf6\x92\x1d\x63\xb8\x02\x56\
854+\xd0\x47\xb7\x2e\x5d\x83\xa2\x1e\x0b\xcc\x27\x91\x0d\xc7\x79\x6c\
855+\xd9\xf6\x12\xc2\x45\x06\x0e\x9c\xbc\x0d\x43\xfc\x13\x2c\xbf\x4b\
856+\x30\x5a\x7e\xf8\x6c\xdb\xcb\xf6\x93\x89\x41\x95\x0c\x06\x4d\xee\
857+\x83\x8f\x2c\x66\xc1\xaf\x65\x71\x13\xa6\x10\x99\x5b\x61\x30\x41\
858+\xa1\x90\xe0\xe9\x61\x15\xef\x7e\x97\x36\xd8\x73\xf6\x8f\xd7\x5f\
859+\x7d\x86\xf5\x24\x3e\xc0\x27\x07\xde\x45\x9e\x15\xc0\x9b\x5b\xde\
860+\x46\x36\x02\x39\x58\xb1\x78\x29\xf6\xbd\x31\x88\x82\xd9\x73\xd1\
861+\xf9\x5a\x10\xa3\x03\xc7\xd1\xd7\xb5\xb8\xa7\x7a\x51\xba\xb1\xac\
862+\x21\xb8\xc8\x90\x7e\xc5\x94\xc1\x15\x24\x5c\x72\x32\xff\x92\x53\
863+\x29\x09\x5d\x94\x4f\x70\xde\xf7\x69\xfa\xe5\x3d\xcf\x2d\xdb\xe0\
864+\xc4\xee\x56\x85\x7d\x23\xb8\xec\xba\x85\x38\xf5\xc6\x87\x48\x28\
865+\x85\xcf\xbf\x38\x9a\x3b\x81\x6c\x9e\xdd\xf2\xa2\xfe\x63\x17\xbb\
866+\x77\xbf\x8e\xc1\xd2\x83\x68\xba\x69\x09\x2b\x59\x72\xdc\x6e\xdf\
867+\x6d\xbf\x30\x7a\x26\x91\x52\xa6\x2d\x14\x29\x62\x4a\xc0\x13\x29\
868+\xa6\x2b\x27\x7d\x1b\x44\x6a\x54\xda\xfd\xff\x95\x5b\x2b\x2e\xdf\
869+\xe9\x2c\x5e\xfb\x30\x6b\x9f\xfb\x36\x7e\xd1\x9c\x44\x97\x11\xc3\
870+\xa6\x6d\x9b\x71\x3e\x1c\x33\xe0\x23\x8e\x5b\xee\x58\x87\x9f\x5c\
871+\xb9\x0a\x63\xfb\xf3\x69\xe8\x98\x3e\x96\x77\xe8\xe0\x70\x67\xe2\
872+\xf3\x34\x26\x61\x53\x8a\xa4\x92\x20\x05\x30\xc9\x61\xc0\x20\x3d\
873+\x3d\x26\x06\xdc\xe3\xa7\xde\x34\x5a\xfa\x0f\xe4\xc3\x3e\x51\x48\
874+\x3f\x5c\xbe\x1a\xdb\xef\x8e\x20\x00\x03\x9a\x6f\x6f\xe0\x99\x2d\
875+\x9b\x91\xc7\x04\x42\x86\x09\xff\x48\x09\x88\x2e\x80\xa2\x8f\xa2\
876+\xd1\x7e\xf7\x4b\xcf\x40\xda\x8a\x92\x6d\x8d\xc3\x35\x12\x50\x22\
877+\x05\x12\x09\x12\xc2\x45\x6a\x84\x3a\x86\xd0\x30\x0a\x3c\x07\xff\
878+\x70\x09\xf2\xbc\xd6\x04\x6c\x7c\xf1\x05\xe4\xc2\xc0\xd7\x10\xb7\
879+\x53\x60\xe0\x68\xc3\x0e\xd4\x5c\x5e\xcc\xe3\xf1\x90\xaa\x9a\x3d\
880+\xda\xeb\x9c\x11\xa8\xa8\xc9\x03\x41\xc1\xf4\xe5\xc1\x34\x8a\x50\
881+\x10\x2a\xc0\xb1\x96\x36\x74\x1e\x1e\x69\x45\xe5\x3f\x64\x59\xd9\
882+\x8b\xec\xc8\x23\x09\xba\x75\xd3\x5a\x8c\xf9\xc6\x31\x13\x1c\x5f\
883+\xc3\xab\x3b\x5e\x87\x47\x7e\x5e\x04\x7d\x2d\x63\x18\x6e\x9d\xc4\
884+\x67\x7b\x8f\x1c\x8a\xb5\x02\x0b\xc4\x15\x8c\x9d\x98\x8d\xdd\x1b\
885+\x8e\xa0\x7b\x57\x1c\xbf\x5d\xf7\x38\x1a\x23\x97\xe8\xdf\x1f\x3d\
886+\x86\x3e\xe0\xdc\x11\xc5\x4a\xef\x28\x05\x63\xc0\x5b\x5b\xde\xc1\
887+\x4c\x18\xf8\x06\x98\x77\xbd\x2c\x0e\x0b\x06\xec\x09\x1b\x9a\xf4\
888+\xac\xc2\x30\xac\xb0\x40\xfd\xc2\x1a\x1a\x3a\x37\xc0\xee\xfa\xd9\
889+\x1d\x34\x99\x8c\xf3\xc1\x91\x7e\x68\x46\xa0\xf1\x05\x0c\x98\x01\
890+\x01\xc2\xd7\xc3\xf1\x0d\xbc\xbc\xfd\x15\x28\x45\x20\x9a\x36\x04\
891+\x16\x3d\x17\x45\x32\x91\x82\x63\xbb\x70\x1c\x89\xba\xba\x06\x70\
892+\x26\x30\x32\x9c\xe9\xcd\xa0\x71\x1d\x17\xd2\x95\x78\x65\xfb\xab\
893+\xdf\xcd\x80\x47\x61\x61\x01\x88\x68\xda\x80\xe1\x19\xe2\x8c\x53\
894+\xda\x4e\xb3\x64\x32\x49\xb6\x6d\xc3\x30\x0c\x72\xa5\xfc\xbf\x01\
895+\xa5\x14\xaa\xab\xe7\x40\xf3\xdd\x0d\x8c\x45\x63\xde\x51\x10\x34\
896+\x4a\xe1\xab\x40\xc0\x3f\x29\x04\x17\xa6\x61\xaa\xe2\xe2\x62\x16\
897+\x0e\x87\xd1\xd5\xd5\x85\xe1\xe1\x61\x02\xe0\x40\xe3\xf3\xf9\x70\
898+\xea\x54\x2f\xbe\x09\xf6\x2d\x0c\xb2\x69\x05\x02\x01\xe3\xb1\x47\
899+\xff\x90\x6c\xde\xfa\xd2\xfa\x70\x38\x6f\x8b\x61\x9a\xe8\xef\x3f\
900+\xa3\xb4\x01\xae\xc1\xd8\xd8\xd8\xbd\x6d\x6d\x6d\x9b\x84\x30\x4c\
901+\xe9\xe5\x0f\x28\x2d\xca\xd6\xb7\x31\x20\xa6\x64\x4e\xc9\x97\x5d\
902+\x0d\x21\xfc\x3a\xea\xf1\xba\xba\xda\xbb\x9b\x96\x2d\x7b\x20\x92\
903+\x5f\x90\x31\xb0\x7f\xff\xfe\x47\x5a\x5a\x5a\x36\x99\xa6\x39\xcb\
904+\x71\x1c\x7b\x2a\x89\xf3\xab\x27\x57\x4b\xce\x74\x0b\x98\x16\x9f\
905+\x6a\xe8\xd7\xb2\xce\xaf\xba\xb9\x4f\x4f\x5b\xda\xd5\xd9\xf5\x7e\
906+\x63\x43\x43\xa2\xc4\x6f\x55\xe9\xcf\x41\xef\xa1\x43\x87\x3e\x65\
907+\x8c\x35\xea\xe6\x29\x00\xe9\x2c\xa5\xb2\x2a\xcb\x4a\x42\xcd\x94\
908+\x00\x3f\x2f\x05\x23\x47\x35\x74\x33\x83\x88\xd2\x53\xd3\x08\xbd\
909+\xf7\xeb\xbd\x33\xb5\x77\xa7\xa7\xcd\x9e\x3c\x6b\x7a\x85\x29\xfe\
910+\x07\x0a\x65\x64\x31\x04\xd2\x8f\x09\x00\x00\x00\x22\x7a\x54\x58\
911+\x74\x53\x6f\x66\x74\x77\x61\x72\x65\x00\x00\x78\xda\x2b\x2f\x2f\
912+\xd7\xcb\xcc\xcb\x2e\x4e\x4e\x2c\x48\xd5\xcb\x2f\x4a\x07\x00\x36\
913+\xd8\x06\x58\x10\x53\xca\x5c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\
914+\x42\x60\x82\
915 \x00\x00\x02\x31\
916 \x89\
917 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
918@@ -52568,146 +53355,300 @@
919 \xdc\xe7\x5f\x14\x75\xc5\x22\xcb\xbe\x02\xfc\x02\xce\x8e\x94\x0e\
920 \x4b\x04\xe7\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
921 \
922-\x00\x00\x02\x7e\
923-\x89\
924-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
925-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
926-\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
927-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
928-\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
929-\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
930-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x01\xfb\x49\x44\
931-\x41\x54\x38\x8d\x95\x92\x4f\x6b\x1a\x51\x14\xc5\x7f\xef\xa9\x38\
932-\xcd\x7a\x16\x5d\x14\xa4\xd0\x65\x9b\x92\x45\x05\x91\xe2\xae\xed\
933-\xb6\x76\xd7\x64\x95\x0f\x60\x3f\x44\x0b\xfd\x43\xc1\x76\x15\x42\
934-\x20\x10\xb2\xf6\x3b\xe8\xc2\x8a\x28\x86\x5a\x90\x11\x0c\x74\x21\
935-\xb3\x10\xd4\x2c\x26\xe3\x8c\xa3\x73\xbb\x88\x63\x75\x48\x0a\x3d\
936-\x70\x37\xef\x71\xce\x3d\xf7\xde\xa3\x80\x47\xc0\x2e\xff\x87\xae\
937-\x88\x0c\x00\x92\xc0\xee\x68\x34\xaa\x84\x22\x68\xad\xd1\x5a\xa3\
938-\x94\xda\x2a\x80\xcb\xc1\x80\x76\xbb\xcd\xde\xde\x1e\xd9\x6c\xf6\
939-\x0d\x30\x00\xd0\x00\xa1\xfc\xbb\xdd\xd5\xd5\x15\xc3\xe1\x90\x83\
940-\x83\x03\x5a\xad\x16\x85\x42\xe1\x69\xf4\xa7\x01\x12\x09\x4d\x22\
941-\x91\x58\x3b\xd0\x5a\x93\xd8\xa8\x45\x10\x60\x9a\x26\x3b\x3b\x3b\
942-\x1c\x1e\x1e\x92\xcb\xe5\xde\x95\x4a\xa5\x27\x00\x0a\x28\x8e\x27\
943-\x93\x0a\x22\xa8\x48\x40\x29\xc2\x30\xa4\xd3\xe9\xe0\xba\x2e\x8e\
944-\xe3\xe0\x38\x0e\xfb\xfb\xfb\x18\x86\x81\x65\x59\xfd\xa3\xa3\xa3\
945-\x7b\xae\xeb\xe6\x14\x50\x9c\x4c\xa7\x15\xe0\xaf\x83\xd5\xdc\xa9\
946-\x54\x6a\xed\x2c\xda\x45\x84\x5e\xaf\x57\x2b\x97\xcb\xa3\x64\x44\
947-\xbc\x4d\xe0\x36\x62\x1c\x37\x02\x11\x41\xa9\x9b\xd2\x9a\xe5\x72\
948-\x49\xbd\x5e\xe7\xfa\xfa\x7a\x6b\x84\x74\x3a\x8d\x65\x59\xfd\xe3\
949-\xe3\xe3\x87\xc0\xdb\x24\x80\x8a\x3b\xd0\x37\x4b\xcd\xe7\xf3\x28\
950-\xa5\xb0\x6d\x1b\xdb\xb6\x49\xa7\xd3\xf8\xbe\xcf\xd9\xd9\xd9\x7d\
951-\x11\x79\x7e\x72\x72\x62\x27\xa3\x4d\x46\x37\x8f\xc6\x61\xe3\xcd\
952-\x30\x0c\xc6\xe3\x31\x9e\xe7\x71\x7a\x7a\x4a\xa3\xd1\xf8\x5e\xad\
953-\x56\x7f\xad\xcf\x48\x8c\x1c\x0f\x92\x69\x9a\x64\x32\x19\xce\xcf\
954-\xcf\xc9\x66\xb3\x52\xab\xd5\x2e\xb6\x72\x10\x27\xc4\x53\xe8\x79\
955-\x1e\x4a\x29\x5e\xbc\x7a\xc9\x8f\x66\xb3\x09\xfc\xdc\x5c\x64\xd1\
956-\x75\x5d\xf1\x3c\x4f\xe6\xf3\xb9\x04\x41\x20\x8b\xc5\x42\x96\xcb\
957-\xa5\x84\x61\x28\x41\x10\x48\xb7\xdb\x95\xf9\xdc\x97\x0f\x5f\x3e\
958-\xf7\x81\xc7\x80\x12\x11\x44\x64\x25\x30\x9b\xdd\x29\xe0\x38\x8e\
959-\x0c\x2e\x2f\xe5\xfd\xa7\x8f\x7d\xe0\x19\xa0\x23\x72\x24\xf0\xda\
960-\x9d\xcd\x42\xdf\xf7\x25\x08\x82\x2d\x01\x11\x91\xc9\x74\x1a\x7e\
961-\x2d\x7f\x6b\xac\x3a\x6f\x91\x45\x04\x05\x3c\x58\x29\xdf\x95\x98\
962-\x70\x35\xf3\x6f\x89\x5a\x6e\xe0\x0f\xd5\xf2\x24\x09\x1c\xd8\x9f\
963-\xe3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
964-\x00\x00\x03\x3e\
965-\x89\
966-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
967-\x00\x00\x10\x00\x00\x00\x10\x08\x03\x00\x00\x00\x28\x2d\x0f\x53\
968-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\
969-\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\
970-\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\
971-\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\
972-\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\
973-\x46\x00\x00\x01\xb0\x50\x4c\x54\x45\x00\x00\x00\xff\xff\xff\xdf\
974-\x98\x00\xe6\xa0\x0c\xe7\xa3\x10\xdf\x98\x00\xe6\xa2\x0e\xe7\xa2\
975-\x10\xdf\x98\x00\xe5\xa0\x0d\xe3\x9d\x08\xe1\x9e\x01\xe1\x9f\x00\
976-\xe1\x9f\x01\xe1\x9f\x0d\xe1\x9f\x12\xe3\xa1\x11\xe5\xa5\x1a\x00\
977-\x56\xff\x10\x60\xef\x10\x60\xf2\x20\x99\xdd\x30\x80\xce\x50\x8b\
978-\xb1\x50\xb2\xad\x8e\xb2\xa2\x8f\xad\x72\x8f\xb2\x9e\x9f\xbb\x66\
979-\xc3\x4d\x02\xc4\x4f\x01\xcc\x5d\x03\xd4\x69\x02\xdc\x84\x0c\xdc\
980-\x8d\x05\xe1\x90\x09\xe3\x9b\x0b\xe5\x99\x0a\xe5\xa8\x01\xe7\x9d\
981-\x09\xe7\xad\x02\xe7\xae\x01\xe7\xaf\x01\xe7\xb0\x01\xe7\xb0\x03\
982-\xe7\xb0\x09\xe7\xb0\x10\xe7\xb1\x1c\xe7\xb1\x1f\xe7\xb1\x33\xe7\
983-\xb2\x38\xe7\xb2\x40\xe9\xb4\x43\xeb\xb6\x04\xeb\xb8\x45\xeb\xbb\
984-\x20\xeb\xbc\x2d\xec\xb9\x48\xef\xbd\x3a\xef\xc4\x65\xf3\xb9\x17\
985-\xf4\xb8\x14\xf5\xba\x13\xf7\xcd\x0e\xf7\xcf\x0d\xf7\xd1\x0f\xf7\
986-\xd7\x18\xf7\xdc\x61\xf7\xe4\x91\xf7\xe6\xa5\xf8\xce\x11\xf8\xe7\
987-\xbf\xfb\xc8\x1d\xfb\xca\x1b\xfb\xd8\x10\xfc\xcd\x1a\xfc\xfd\xac\
988-\xfd\xd2\x17\xfd\xfa\x60\xfd\xfb\x7c\xfd\xfc\x7e\xfd\xfc\x84\xfd\
989-\xfe\xd2\xfe\xf8\x20\xfe\xf8\x24\xfe\xf9\x37\xfe\xf9\x3b\xfe\xfa\
990-\x47\xfe\xfa\x4f\xfe\xfc\x9c\xfe\xfc\xa3\xfe\xfe\xd9\xff\xd0\x1f\
991-\xff\xd1\x1e\xff\xd2\x1d\xff\xd3\x1d\xff\xd4\x1c\xff\xd5\x1b\xff\
992-\xd6\x1a\xff\xd6\x1b\xff\xd9\x18\xff\xda\x17\xff\xda\x22\xff\xda\
993-\x24\xff\xdb\x19\xff\xdc\x16\xff\xdf\x19\xff\xdf\x41\xff\xe0\x12\
994-\xff\xe2\x3c\xff\xe3\x10\xff\xe4\x19\xff\xe5\x0e\xff\xe6\x0e\xff\
995-\xe7\x0d\xff\xe7\x61\xff\xe9\x20\xff\xea\x0a\xff\xea\x1a\xff\xeb\
996-\x0a\xff\xed\x08\xff\xed\x67\xff\xef\x06\xff\xf0\x06\xff\xf1\x04\
997-\xff\xf2\x5d\xff\xf2\x7c\xff\xf4\x53\xff\xf4\x82\xff\xf5\x03\xff\
998-\xf6\x05\xff\xf7\x07\xff\xf8\x16\xff\xf8\x17\xff\xf8\x6c\xff\xf8\
999-\x87\xff\xf9\x30\xff\xfa\x78\xff\xfb\x7d\xff\xfd\xaf\xff\xfd\xc0\
1000-\xff\xfe\xe1\xff\xff\xf2\xff\xff\xf5\xc6\x84\xb0\x01\x00\x00\x00\
1001-\x12\x74\x52\x4e\x53\x00\x00\x20\x20\x20\x60\x60\x60\x8f\x8f\x9f\
1002-\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xb4\xb2\xe3\xac\x00\x00\x00\xda\x49\
1003-\x44\x41\x54\x18\x95\x63\x60\x44\x03\x0c\x8c\x0c\x0c\x0c\x2c\x9c\
1004-\x82\x26\xc6\xfc\x1c\x4c\x40\x26\x58\x80\xdd\xd2\xbd\x3f\x3a\xaa\
1005-\xdb\xc5\x90\x15\x22\xc0\x66\xdd\x17\xe4\x13\x10\x11\xd2\x54\x6f\
1006-\xc1\x0a\x12\x60\x36\xeb\x8d\x0c\xf4\xf7\x0b\x6b\x6d\xac\x28\xd3\
1007-\x63\x02\x0a\x70\xb9\x76\x85\x4b\x4a\x87\x05\xcb\x48\x95\xe6\x39\
1008-\x71\x00\x05\x04\x7a\x3a\x42\x85\x44\x5a\x9a\x85\x85\x4a\x72\xf2\
1009-\x79\x81\x02\x46\xed\x6d\x9d\x62\x12\x8d\x35\xe2\xa2\x95\xc5\x19\
1010-\x3a\x40\x01\xc3\x86\x5a\xfd\xea\xaa\x8a\xf2\x22\x2f\xab\xec\x34\
1011-\x6d\xa0\x00\x5f\x5d\x81\x9c\x52\x51\x61\x5e\x8e\x8a\xac\x4d\x26\
1012-\x0f\x50\x80\xc3\x39\xcb\x4d\x55\x41\x5d\x59\x5e\xd1\xd3\xc3\x01\
1013-\x64\x28\x93\x41\x6e\x4a\x8a\xaf\x9d\xad\x77\x5c\x4c\x92\x1a\xc8\
1014-\x5a\x06\x56\xf3\xf4\xf8\xf8\xb8\xd8\x98\x98\x64\x53\x56\x88\xd3\
1015-\x59\x75\x1d\x33\x13\x13\x52\xed\x35\xa0\x4e\x67\x60\x60\xe2\xe0\
1016-\xd1\xd2\xe4\x86\x79\x0e\x0d\x00\x00\x00\x82\x2d\xeb\x05\xb0\x41\
1017-\x76\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
1018-\x00\x00\x02\x9a\
1019-\x89\
1020-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
1021-\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
1022-\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
1023-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x01\xbb\x00\x00\x01\xbb\
1024-\x01\x3a\xec\xe3\xe2\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
1025-\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
1026-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x17\x49\x44\
1027-\x41\x54\x38\x8d\xa5\x93\x3d\x68\x13\x71\x18\xc6\x9f\x37\xcd\x11\
1028-\x9b\x8f\x5e\x92\x4b\x52\xf3\x71\xf9\x20\xc1\xd2\x52\x3b\x1c\x15\
1029-\xc1\x82\xb5\x08\x35\x89\x10\x35\x38\x0b\x4e\x82\x60\x47\x89\x5b\
1030-\xea\xd4\x41\x08\x14\x1d\x1c\xd2\xbd\x08\xa5\x5c\x16\x17\x1d\x0c\
1031-\x38\x88\x20\x68\x87\x22\xd8\x56\x93\xab\x62\xed\xa9\x6d\x4c\xc9\
1032-\xe5\x7a\x7f\xa7\x0b\x67\xda\x45\xfa\x8c\xff\xf7\x7d\x7e\x3c\x2f\
1033-\x0f\x7f\x62\x8c\xe1\x24\xb2\x9d\xc8\xdd\x0f\x58\x21\x92\xde\xdc\
1034-\xbe\xf5\x7d\x95\xe3\x72\xfd\x8b\xab\x1c\x97\xfb\xf0\xe0\x7e\x73\
1035-\x85\x48\x3a\x16\xb0\x4c\x24\xf9\x27\xc7\x5e\x9d\x19\x1d\x0b\x46\
1036-\x8b\x59\xf9\x19\x51\xd6\x32\xcb\x85\xb3\xd3\x72\x3c\x18\x8c\x9e\
1037-\xbe\x32\x5d\x5f\xb6\x40\x7a\x00\x0d\x58\x4a\x4e\x9e\x77\x1d\x34\
1038-\xb7\x11\x4b\x8e\xda\xc3\xf9\x4b\xb5\x2a\x51\xbe\x42\x74\xcd\x79\
1039-\xf9\x42\x4d\x1c\x99\xb0\xb7\xb7\x1a\xc8\xcc\xe6\x9d\x1a\xb0\x64\
1040-\xfa\xec\x16\x40\x69\xad\xfe\xb2\x96\x1c\x3f\x67\x07\xb3\x21\x10\
1041-\x4e\xd9\x37\x2e\xb6\xe4\x5d\xc3\xa0\xd9\x44\xc6\xa6\x36\x14\x0c\
1042-\x38\x1d\xf8\xf6\xe2\xbd\xae\x01\x25\xd3\x47\xd6\x16\x9e\x12\x65\
1043-\x87\x47\xa2\x72\x4c\xcc\x70\x86\xc6\x60\xf3\xba\x71\xc0\x0c\x38\
1044-\x3b\x06\x1c\x89\x08\xb6\xde\xbe\xee\x2a\xef\x3e\x16\xee\x30\xf6\
1045-\xfc\x58\x00\x00\x2c\x12\x65\x23\x99\x61\x39\x12\x8c\x72\x87\x1a\
1046-\x81\x1c\x0e\xe8\xac\x83\xaf\xca\xa7\xee\xce\x97\x5f\x85\x39\x8b\
1047-\xf9\x9f\x13\x4c\x75\x00\x68\x5a\x17\xfa\xfa\x3a\xf4\x9f\x6d\x10\
1048-\x80\x01\x9f\x13\xcc\x73\x0a\x9d\xfe\xe5\xfe\x04\x0b\x44\x59\x31\
1049-\x21\xc8\xe3\xfb\x1d\x0e\x6a\x0b\x6d\xbf\x1b\x04\x60\x50\x6d\x01\
1050-\x7e\x37\xd6\x3c\x83\xdd\xc6\xe7\x9d\x42\xc9\x92\xa2\xd7\xc2\x3c\
1051-\x51\x4e\x4c\x45\xe4\xa9\x96\xce\x09\x6a\x0b\x2e\xc1\x8b\x27\x3c\
1052-\xcf\x16\x79\x2f\x73\x05\x7c\x10\xd4\x16\xa6\xfe\x1c\x72\x62\x3a\
1053-\x2e\x2f\xf0\xfc\xd5\x23\x00\x16\x0f\x3d\x9e\x19\xf2\x72\xa1\xdd\
1054-\xdf\x70\x07\xfc\xa8\x78\x79\x43\xd8\x54\x8a\xbe\xcd\xe6\xcd\x0a\
1055-\xcf\x1b\xee\xa0\x80\xd0\x0f\x15\x33\x9e\x21\x8e\x17\xc5\x47\xbd\
1056-\xd8\x8c\x31\x30\xc6\x50\x06\xa4\x6a\x22\xb6\xa7\x48\x67\x59\x39\
1057-\x9d\xd2\xe7\x80\xeb\xe6\xec\x2e\x50\x9c\x4f\xa7\x74\x45\x9a\x60\
1058-\xd5\x44\x6c\xaf\x0c\x48\xe6\xac\x07\x30\x21\x0f\x33\xd1\x8d\x7b\
1059-\xc0\x0d\xeb\xbb\x09\xa9\xe7\x73\xdb\x56\x33\x63\xec\x68\x8d\xff\
1060-\xab\x13\xff\xc6\xbf\x7b\x12\xeb\x18\x4c\xd6\x48\xe1\x00\x00\x00\
1061-\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
1062+\x00\x00\x04\x00\
1063+\x89\
1064+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
1065+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
1066+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
1067+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
1068+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x37\x5c\x00\x00\x37\x5c\x01\
1069+\xcb\xc7\xa4\xb9\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x07\x16\
1070+\x12\x19\x01\xcd\x12\xdd\x84\x00\x00\x03\x80\x49\x44\x41\x54\x38\
1071+\xcb\x5d\x8f\x6d\x4c\x95\x65\x00\x86\xaf\xe7\x79\x5f\xce\x2b\x07\
1072+\x0e\x14\x04\x1e\x3e\xa5\x46\x8a\x08\x8c\x65\x88\x90\xa0\x75\x96\
1073+\x7c\xb9\x69\x19\xe2\x5c\xb9\x28\x7f\x44\x65\x6b\xcd\xad\x65\xce\
1074+\x3e\x66\x34\x6b\x8c\xe6\xd6\x56\x8b\xa9\xeb\xe3\x4f\xd9\xc6\x16\
1075+\x31\x4d\xca\x48\x6a\xb3\x11\xce\xa6\x45\x80\x1f\x7c\x48\x2a\x12\
1076+\x70\x80\x73\xce\xfb\x9e\xf7\x3c\x4f\x3f\xcc\xcd\x75\x6f\xf7\x76\
1077+\xff\xb8\xb7\xfb\xba\x45\x45\x63\x25\x51\xcb\x46\x84\x25\x22\x62\
1078+\x30\x7e\x22\x8c\x95\xed\xfa\x2a\x1b\xef\xdf\x96\x92\x95\xf0\x88\
1079+\x69\xc9\xe4\xf0\x82\x33\x32\xf1\xc7\xcc\xa7\x1b\x5b\x8a\x06\xe2\
1080+\xd6\xb7\x3f\xe8\xf3\xe7\x7d\xe2\xf5\xfb\xbb\xbc\x69\x69\xef\x08\
1081+\x7d\x53\xb3\x79\x5f\x1d\x5a\x6b\x11\x9c\x8a\x68\x65\x8b\xfb\x8a\
1082+\x1a\xfc\x5f\xa4\x66\x27\xac\x35\x2c\xa5\x95\x88\xa2\x95\x16\xe1\
1083+\x60\x2c\x1c\x1a\x75\x0e\xbc\x57\xda\xdb\xfc\xfe\xae\xc5\xfc\xac\
1084+\x49\x05\xa6\xd1\x6d\x9c\xfe\xeb\x67\x26\xfa\x83\xf4\x9d\xe8\x65\
1085+\xf4\xcf\xa0\x51\xd6\x92\x73\xcc\x77\xaf\x59\xe5\x9a\x31\x37\x22\
1086+\xa2\xc2\xd5\x51\x5c\xed\x2a\x23\x51\xc4\xad\x4e\x6d\x08\x48\x5f\
1087+\x63\x4a\xeb\x0f\x43\x2c\x2b\x99\x25\x79\x26\x32\x2d\x2a\x5e\x2c\
1088+\x43\x58\x5a\xc6\x6c\xad\xa4\x6b\x54\x27\xaf\x91\xbd\x56\xbc\x11\
1089+\x93\xd2\x94\xa6\x47\x0a\x21\x85\x96\x5a\x88\x75\x66\x50\x55\xe8\
1090+\x42\x79\x95\x26\x96\xfa\xfd\x18\x13\x6f\xcc\x4c\x5f\xfa\xa6\xd4\
1091+\x74\x12\x42\x48\xaf\x46\x2b\x60\xc1\x93\xbb\x18\x73\x59\xb4\x35\
1092+\x86\x21\x45\x9c\x36\x10\x08\x91\x21\x1c\x76\xe6\xaf\x93\x8f\xbd\
1093+\x70\x86\x1b\x53\x7d\x74\x1c\xac\xd1\x37\xbd\xaf\xbc\xbc\xbf\x2d\
1094+\x3c\x66\x5a\x8b\x16\x12\x85\x8e\x82\xb4\xe3\x26\xbd\x1e\x8d\x99\
1095+\x28\x84\xc7\x34\xb5\x69\x18\xc2\xa3\x35\x6f\xe6\x96\xd2\x76\x74\
1096+\x8a\xa1\xcb\xf3\x7c\xfc\x9a\x97\xa4\xe8\xa9\x43\x5f\x6d\xea\xfb\
1097+\xec\xd7\xc9\x5a\x44\x60\x6b\x80\x85\xeb\x51\x06\xfb\x24\x5e\x4c\
1098+\x6f\xf5\xe7\x0b\x67\x12\xb2\x65\x91\x21\x0d\x25\xa4\x90\x3b\xac\
1099+\x44\x9c\x8b\x79\xec\xde\xdb\x4d\x89\xdf\xe6\xd1\xf2\xc5\xd0\x3f\
1100+\x63\xe1\xdc\xd3\xd5\xc5\x33\x4e\x34\xa6\x44\x21\xbb\x78\xe8\xf8\
1101+\x05\xb4\x6d\xc8\x98\xab\xd5\xfc\x45\xd9\x9c\xf7\xb0\xe7\xb0\x77\
1102+\xc6\x54\xab\x52\x5d\x59\x1d\xc9\xa0\xa6\xe5\x1c\x59\xe6\x15\x56\
1103+\x24\xc7\xf3\xc1\xa9\x4c\x0b\x1c\x67\xe5\x8a\x24\x92\x96\x99\x88\
1104+\x07\x36\x56\xe0\x8b\x25\x31\xf0\xfd\x34\xf3\xf4\x03\xc8\x57\x7b\
1105+\xea\xbe\x2b\x0c\x11\x78\x3c\x23\xc8\x8e\x7d\x2e\x23\x23\xd7\x78\
1106+\x6a\x73\x31\x67\x13\xe7\xea\x12\xfd\x1c\x57\x20\x5d\x1b\x95\xfa\
1107+\x5b\x01\x62\xfb\x86\x67\x99\xe8\x87\x82\xb7\x27\xf1\xa4\x68\x19\
1108+\xc3\x51\xf3\x7f\xab\xc0\xc1\xd2\x91\x9e\x8e\xee\xa5\x74\x74\xce\
1109+\xf1\xd6\xd3\x0e\x81\xf5\xaf\x93\x17\x18\x10\xc3\xdc\x10\xcb\xc5\
1110+\x15\x0d\xfb\x59\xb3\xa5\x15\x01\x50\x59\x53\x45\xf0\x92\x97\xeb\
1111+\x63\xd3\x4c\xd9\xfd\xcc\xfe\x58\xa7\xfb\x7e\x1f\xe2\xb9\x36\xc9\
1112+\x13\x55\x11\xea\xeb\xe3\x39\x3a\x91\xd9\x92\x9c\x27\x3e\xd2\x4a\
1113+\x4b\x27\xa4\x54\x7a\xf3\x4f\x9c\xbf\xeb\x25\x4c\x80\xe0\xc9\x12\
1114+\x4a\x9f\x1f\xe7\x99\x3d\x3b\xd1\x27\x57\xeb\xe9\xe9\x63\xec\xf9\
1115+\xf0\x6e\xf2\x33\x6d\xb6\x56\x3b\x9c\x0f\x37\xf2\xcb\xe1\x2f\xcf\
1116+\x46\xdd\x28\xf7\xa4\xa5\x62\x1a\x26\x6e\xfb\x06\xce\xcd\x1d\xba\
1117+\x45\x70\xa7\x7a\x3a\x8f\xe8\xf9\xb9\x41\x5a\xdb\xbf\x66\xef\xf6\
1118+\x6b\xc4\x25\x6f\xd1\x46\xce\x93\xd1\xba\x4d\xb5\x45\xc0\x70\xbc\
1119+\xb5\x44\x84\xed\x88\xbe\xdd\x37\x6f\x87\xcc\x4c\x3f\x0d\xf5\xb5\
1120+\xc4\x99\xb3\xa4\xc7\x8f\x70\x60\x77\x2e\x4b\x52\xb7\x31\x1a\x5c\
1121+\xae\x43\x13\x97\x15\xe0\x02\x38\x6e\x84\x9c\x9c\x2c\xc6\xc7\xaf\
1122+\xfe\x7f\x1b\x03\x88\x2f\x2b\x4e\xd3\x9d\x47\x5a\xf4\xd0\xe0\x05\
1123+\x5d\x5b\x5b\x33\xdc\xd4\xd4\xa4\xcb\xcb\xd7\xbe\x0b\xa4\x5b\x96\
1124+\x95\x0e\xf8\x00\x0f\xdc\xa2\xbf\xf3\x82\x07\x48\x00\x7c\x52\xca\
1125+\x24\xa5\x94\x5c\x55\x58\x98\x55\xb0\xb2\x20\xb3\xab\xeb\xdb\x01\
1126+\xdb\xb6\x01\x16\x81\xf9\xff\x1c\x02\xd4\xbf\xaa\x26\x7a\xee\x7a\
1127+\x8e\x2f\x5d\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
1128+\x00\x00\x02\xcf\
1129+\x89\
1130+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
1131+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
1132+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
1133+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
1134+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\x1b\xaf\x01\
1135+\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x01\x04\
1136+\x03\x37\x10\xc4\x11\x57\xa9\x00\x00\x02\x4f\x49\x44\x41\x54\x38\
1137+\xcb\x8d\x93\x5d\x48\xd3\x71\x14\x86\x5f\xdd\xda\x46\xd9\x6c\x64\
1138+\x4c\xb3\x91\x33\x36\xa8\x2d\x2a\xc4\xb9\x69\x4d\x07\x41\xd1\x8d\
1139+\xe1\xc2\xdc\x16\x61\x17\xa2\x42\x59\x5d\xd4\x55\xa9\x18\xcb\xac\
1140+\x8b\x1a\xb4\x35\x45\x42\x6a\x42\x24\xec\xc3\x9a\x31\x0d\x5c\x73\
1141+\x5b\x60\x90\x46\x5f\x4c\x98\xb2\x26\x96\x0d\x43\x9d\x73\xf6\xdf\
1142+\xfc\xff\xba\xc9\x2b\x65\xdb\x7b\xff\xbc\xe7\xc0\x79\x4e\x16\x32\
1143+\x88\xc1\xf0\x48\xa6\x54\x2a\x5b\x69\x42\x1f\x5b\x5e\x5e\x5a\x8a\
1144+\x44\x22\x36\xb7\x7b\xb4\xd3\x64\xec\x5e\x49\x0b\xab\x6b\xd5\x47\
1145+\x66\x66\xa6\x63\x34\x4d\x93\x85\x3f\x0b\xc4\xf4\xc4\x98\xd0\xea\
1146+\x34\x1f\xe5\x8a\xb2\xb2\x4c\x86\xe3\xea\xb5\x16\xe3\xfc\xef\x5f\
1147+\x24\x1e\x5f\x25\x5e\xef\x58\x0c\xc0\x19\x00\x3b\x00\x64\x01\x40\
1148+\x76\x1a\x9e\x09\x40\x31\x3b\x3b\x0b\x8a\xa2\xc0\xe3\xed\x5e\x67\
1149+\xb1\x58\xef\x01\xc4\x00\x10\x00\x60\xa4\xa2\x25\xd2\x43\x7c\xb5\
1150+\xba\xa6\x33\x1c\x0e\x33\x24\x52\x29\xb8\x3b\x73\xd8\xc5\x07\x8a\
1151+\x0b\x05\xfb\xf6\xbe\x6d\x6b\x6f\x3b\x58\x2a\x2b\xbd\x91\x72\x03\
1152+\xad\x56\x7b\x4a\x24\x12\x6d\x0b\x04\xa6\x70\xaf\xeb\x01\x28\x8a\
1153+\x42\x91\xb0\xe8\x82\x40\xb0\x3f\x24\x16\x8b\x27\x83\xc1\xe9\xd3\
1154+\xa9\x0a\x18\x25\x25\x25\xf5\xee\x77\x5e\xb0\x38\xdb\xe1\xf1\xf9\
1155+\x31\x31\xf1\x09\x82\x42\x01\x72\x73\xb9\xbc\xc0\x54\x60\xdd\xf2\
1156+\xdc\x62\xdc\xb2\x20\x6f\x4f\x5e\xf6\xf0\x88\x4b\x5f\xa1\x28\xaf\
1157+\xd4\xd4\xd5\xc2\xeb\xf3\xe3\xe8\x61\x09\xd6\xa8\x35\x30\x98\x0c\
1158+\x84\x42\x3f\xfe\xd6\x5f\xbc\x64\x58\x5c\x5c\xec\xdb\x04\x37\x35\
1159+\x37\xe6\xb8\xdd\xa3\x2f\x7d\x3e\x2f\x71\x3a\x9d\x24\x99\x4c\x10\
1160+\xd7\xb0\x6b\xb5\xfa\x6c\xf5\x77\x55\x55\xa5\x8d\xc7\xe3\xdd\x06\
1161+\xa0\x02\xc0\xda\x04\xeb\xf5\x1d\xc2\x91\x11\xd7\xa4\xd9\x6c\x22\
1162+\xe5\x15\xe5\xc4\x33\xe6\x21\xfd\xfd\x16\x3f\x80\x0a\x00\xbb\xfe\
1163+\x5f\x65\xeb\xb4\x77\xb4\x9d\xb4\x3b\xac\x91\x2b\x2d\x97\x09\x3f\
1164+\x9f\x4f\x8c\xa6\xc7\xc4\x31\xe8\xf8\x0c\x40\x98\xce\x95\xec\xd6\
1165+\xf6\x5b\xd7\x9f\x59\xfa\xa8\x3a\xcd\x79\xc2\xe5\x72\x49\x43\x63\
1166+\x03\x79\xed\x7c\x35\x5f\x50\x90\x2f\x4f\x6b\xda\xdd\xce\x3b\x37\
1167+\xcd\x3d\x26\xa2\xd3\x69\x89\x44\x22\x21\x35\xe7\x6a\x88\xd5\x3e\
1168+\x10\x97\xc9\x4a\x35\x1b\xb6\xa5\x34\x8d\xcf\xe7\x37\x45\x57\x96\
1169+\x41\x25\x92\x28\x53\xc8\xa0\x52\x55\xd1\xbd\x3d\x4f\xbb\xc6\xc7\
1170+\x3f\x0c\x6c\xd8\x96\xb2\x80\xc5\x66\x07\x11\xcb\x12\x1e\x3f\x21\
1171+\x07\x87\xc3\x26\x0e\xfb\x60\xef\xd0\xd0\x9b\xfb\x00\x92\x99\xfc\
1172+\x0a\x73\x6e\xee\x67\x33\x40\x77\x47\xa3\xd1\xfc\xaf\x5f\xbe\xbd\
1173+\xb0\x59\x1d\x0f\x01\xac\x22\xc3\xfc\x03\x42\xfe\xed\xe8\xa2\x36\
1174+\x60\xa3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
1175+\x00\x00\x07\x12\
1176+\x89\
1177+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
1178+\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\
1179+\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\
1180+\xa7\x93\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x1b\xaf\x00\x00\
1181+\x1b\xaf\x01\x5e\x1a\x91\x1c\x00\x00\x00\x07\x74\x49\x4d\x45\x07\
1182+\xd8\x01\x03\x13\x16\x15\x72\x49\xfe\xa9\x00\x00\x06\x9f\x49\x44\
1183+\x41\x54\x78\xda\xed\x97\x6b\x6c\x5c\xc5\x15\xc7\xff\x33\x73\x5f\
1184+\xfb\xb6\x1d\xbf\xed\x8d\xed\x18\x97\x10\x1c\x37\xc5\x09\x09\x52\
1185+\x14\xc9\x60\x08\x04\xd3\x82\x9a\x22\x55\x72\x50\x53\x90\xa0\x05\
1186+\xf5\xf1\x21\x54\xa2\x6a\x1b\xb5\x15\xa5\x2a\xa5\x91\xda\x46\x48\
1187+\xe9\x07\x42\xf3\x05\x14\xd1\x8a\x87\x70\x02\x08\xa5\x2a\x6a\x50\
1188+\x22\x14\x92\x50\xa2\xa4\x06\xc7\xaf\xdd\xb5\x77\xed\x7d\xef\xde\
1189+\xc7\xcc\xf4\xde\x9b\x55\x64\x21\xcb\xb2\x11\x6a\xbf\xf0\xdb\x3d\
1190+\x33\x2b\xdd\xa3\x39\xff\x7b\xfe\x67\xb5\x7b\xf1\x25\xff\x6f\x08\
1191+\xbe\x60\xee\xdf\xd2\x60\x10\xe1\x7c\x8b\xb3\x40\xbf\x23\x49\xd6\
1192+\xe1\xfc\xb5\x93\x17\xe6\x2f\xfe\x4f\x04\xdc\xbb\xa3\xbd\x47\xe7\
1193+\xa5\x13\xed\xcc\xee\xcb\x8a\x10\xf2\x0e\x03\x08\x11\x9c\x8b\xa7\
1194+\xde\x38\x97\xfa\x2d\x96\x81\xe2\x0b\x84\x13\xeb\x05\xae\xd3\x3e\
1195+\xa9\x52\xd4\x69\x1c\x1b\xba\xe3\xa0\x1e\x04\xcf\xec\xdd\xde\xb9\
1196+\x1d\xcb\xa0\x60\x05\x5e\x79\xee\xc7\x64\x2e\x35\xff\x1d\x42\xc8\
1197+\xfe\x48\x34\x16\x0f\x47\x62\x49\x55\xd3\x8e\x29\x8a\xfa\xfc\x9d\
1198+\x0f\x3f\xc5\xb1\x84\xbb\xb6\x36\xae\x17\x70\x76\xa9\xc1\x08\xfa\
1199+\x6f\xd9\x8a\x5b\xb7\xed\x44\xf7\x8d\xfd\x38\xf5\xee\xbb\x38\xfa\
1200+\xc2\x51\x38\x0e\xdf\x0b\xe0\xfd\x55\x0b\x38\xfe\x87\x27\xdd\xe2\
1201+\x89\x17\x85\x94\xa3\x86\xa6\x23\x1c\xad\xc3\xba\xe6\x96\x6e\xc6\
1202+\x94\x1d\xf9\xec\xc2\xdd\xaf\x3f\xff\xb3\x07\x46\x1e\xfb\x95\x83\
1203+\x1a\x94\xa1\x3b\x12\x8d\xe2\x07\xdf\x7d\x0c\x03\x03\x5b\xc1\x02\
1204+\x31\x10\xaa\xe2\xce\x7b\x46\x90\x4a\x26\x71\xe2\xc4\xc9\x86\x35\
1205+\x75\x20\x9d\x4c\x8c\x9a\xa6\x39\x0a\x4a\xa1\x69\x12\xdc\x71\xe0\
1206+\x58\x16\xa0\x02\x82\x8b\x91\x72\xa1\xf4\x3d\x00\x7f\xbc\x3e\x7c\
1207+\x7b\x46\x9a\x29\x75\xd0\xbf\xf1\x26\x50\xc5\x00\xd5\xc3\xbe\x00\
1208+\x29\x1c\xec\xde\x3d\x8c\xf1\xf1\xf1\x56\x9c\x9d\x5d\xfd\x0c\x58\
1209+\x96\xb5\xaf\x7f\xf3\x26\xdc\x77\xff\x37\xd0\xd6\x7d\x03\x32\xb9\
1210+\x3c\x0a\xe5\x0a\x4c\xab\x8a\x42\x7e\x11\xd5\x4a\x79\x14\x4b\xb8\
1211+\x7d\xd7\xd0\xec\xed\xdb\x77\x80\x10\x0a\x4f\x34\xf1\x8f\x96\x9e\
1212+\x5a\xd4\xc7\x22\x78\x64\x74\xef\xe4\x9a\x3a\x40\x15\xa5\x7b\xcb\
1213+\xc0\x4d\x50\xc2\x4d\xd8\x15\xef\x05\x65\x9a\x7f\xb0\xe4\x36\x0a\
1214+\xe9\x24\xde\xfc\xfb\x2b\x5d\x58\x02\x63\xe4\x5f\x11\x25\xf0\x4f\
1215+\x29\xc4\x4e\x2f\x47\x58\x25\x78\x08\xbb\x02\xe9\x86\x46\xc5\xb1\
1216+\x35\x7d\x0b\x22\xe1\x90\x04\x65\x20\x4c\x01\x21\x04\x70\xc3\xff\
1217+\x4c\x19\x42\xae\xd7\xcd\xad\xcd\xec\xe2\xeb\x7f\xd2\x50\xa3\x77\
1218+\xd7\x43\x92\x58\x95\x03\xd2\x2a\x43\x58\x15\xf0\x6a\x1e\xbc\x92\
1219+\x85\x30\x0b\xb8\x3a\x31\x2e\x9f\x78\xfa\x97\xc9\x55\x0b\xb8\xf0\
1220+\xea\xa1\xde\x2d\x03\x1b\xe3\x40\x0d\x59\x5b\x84\x00\xa4\x84\xc7\
1221+\x57\x6e\x58\xdf\x28\xb9\xbd\x01\x4b\x68\xba\xe3\x89\xd3\x66\x61\
1222+\xf1\xa4\xb4\x4a\xae\x80\x9c\x2f\xc2\x29\x65\x71\xf4\xf8\x4b\x44\
1223+\x72\xce\x57\x2d\xc0\x88\xc4\x26\xc2\x91\x70\x09\x52\xc0\x0f\xc8\
1224+\x6b\xbb\xb0\x01\xc9\x7d\x5f\x03\xba\x36\x1e\xed\xe9\xbb\x84\xcf\
1225+\x90\x48\x25\xae\x14\x33\x49\x48\xaf\x0b\xe5\x3c\x26\x3f\x19\x47\
1226+\x72\x66\x0a\x01\xc9\xa3\xab\x16\xd0\x37\xb4\x9f\x13\x61\xff\x14\
1227+\xdc\x86\x74\xaa\x20\x5e\x61\x6e\x41\xba\xe1\xef\x76\x19\x9a\xae\
1228+\xfd\xbc\x6b\x60\x04\x9f\xa5\xa3\xb3\xab\xd9\x84\x8a\xd4\xec\x0c\
1229+\xe6\xd2\x19\xac\x6b\xeb\x82\xe2\x58\x08\x12\xb4\xac\x69\x08\x1b\
1230+\xeb\xa3\x47\x4c\xcb\x7c\xdc\xf5\x70\x80\x13\x79\x6d\x08\x09\x81\
1231+\xb0\x2d\xaf\xb5\x09\x45\x53\x8e\xc3\x65\x6c\x6c\xac\xd1\x30\x8c\
1232+\xa1\xf5\xf6\xc7\xed\x11\x9d\xec\xa4\xc1\xe8\x03\x0d\x11\x0d\x82\
1233+\xd7\x83\x80\x20\x97\x2b\x41\x97\x0e\xfa\x6f\xfe\xda\x93\x3f\xfa\
1234+\xc5\xe3\xb7\x16\x8d\xf8\x84\xe4\xce\x9b\x43\x77\x0c\x2f\xac\x38\
1235+\x84\xd1\x6d\xfb\x24\xe7\xce\xd3\xbc\x5a\x04\xaf\xe4\x6b\x43\x95\
1236+\x83\x53\x5e\x44\x26\x93\xf9\xcb\xba\xc1\x6f\x5b\xa9\xb7\x9e\x7d\
1237+\xf8\xe6\x0d\xad\xe3\x83\x83\x83\x2f\xab\xc1\xba\x43\x44\x09\xec\
1238+\x25\x84\x31\x48\x09\x52\x1b\x9e\xc5\xf9\x04\x82\x84\x20\x9f\x59\
1239+\x18\x6e\xe9\xec\xf9\xb5\x9b\x7b\xac\x2f\x52\xf8\x34\xf5\xf6\xef\
1240+\x47\x56\xea\x80\xcf\x54\x29\x30\x16\x12\x0b\x68\x8a\x71\x50\xa6\
1241+\x40\x4a\x89\x74\x36\x8f\xf1\x39\xf3\x6c\xea\x9d\x43\xb7\x31\x23\
1242+\x7a\x84\x12\x4a\x14\x45\x81\x54\x03\xa0\x5e\x87\x5c\xb1\x90\x00\
1243+\x0d\xc6\xfc\xb9\x49\x8d\x7f\x04\x0d\x40\x21\x3d\x8b\xc4\x74\x02\
1244+\x8d\xbd\x83\x80\x62\x44\xa9\x11\xfb\xeb\xfc\xa9\xc3\x71\x8a\x15\
1245+\xd8\x76\xcf\xbe\x9c\x8c\xc4\xad\x89\x74\x15\x1f\x4f\x24\x71\xc9\
1246+\x8d\x05\xdb\xc0\x8d\x1b\x37\xcd\x53\x3d\xfc\x10\x51\x75\x22\x04\
1247+\x87\x87\x94\x5e\x08\x50\x3d\x04\xa2\x07\x20\xfd\x99\xb1\x31\x33\
1248+\x3d\x03\x4b\x32\x54\x2d\x07\x53\x57\xce\xc3\x43\x72\x0e\xaa\x1a\
1249+\x75\x20\x74\xf7\x8a\x02\x12\xff\x7e\xaf\xae\xa3\x23\xae\x46\x1b\
1250+\x3b\x50\xa8\x08\x40\x8f\xa2\xb5\xad\x13\x9a\xa6\x37\x81\xd0\x11\
1251+\xaf\x23\x80\x84\x10\x02\x84\x69\xbe\x00\x21\x1c\x6f\xf7\x83\x0b\
1252+\x8e\xcb\x97\x2f\xc3\x14\x14\x16\xd1\xf0\xd1\x99\x7f\xf8\xb9\xc2\
1253+\xbb\xee\xb7\x49\xb9\x6f\x59\x0b\x26\x27\xd3\xd4\xe4\xce\xb0\xa5\
1254+\xb2\x9f\x68\x76\x82\x70\xee\x80\x10\x02\x29\x24\x24\x51\x60\xb4\
1255+\x6f\x7e\x91\x66\xf5\x98\xcc\x4d\xc3\x71\x38\x2a\x95\x0a\x24\xd5\
1256+\x00\x47\xc0\x87\x30\x3f\x3f\x9b\x49\x63\xce\xb5\x4c\x82\x80\x29\
1257+\x2a\x7a\x07\x87\xfc\x5c\xce\x05\x40\xa4\x1b\x64\x88\x60\x09\x17\
1258+\x2e\x4d\x36\x2b\x94\x3d\x6a\xe8\xda\x23\x9a\xc6\xd6\x7b\x87\xa8\
1259+\x0a\x45\x69\x61\x16\xc5\x5c\x06\x9a\x11\x42\x43\x5b\x37\x02\xc1\
1260+\xa0\xef\xb7\x63\x5b\x28\x95\x0a\xe0\x42\xa2\x34\xff\x29\xb4\xe2\
1261+\x34\x08\x91\x20\x4c\x85\x14\x1c\x8e\x59\xf1\x7d\xaf\x9a\x16\x9a\
1262+\x3b\x3a\x61\x6c\xb8\x0d\x46\x20\x84\xc4\x87\xef\xc8\x7a\x4d\x9c\
1263+\x4f\x2d\xf2\xdf\x5c\x17\xf0\xf6\xa9\x0b\xfb\x5b\x5b\xea\xfe\xdc\
1264+\x50\x17\x0e\x18\xba\xea\x16\x66\xa0\x94\x00\xfe\x9b\x40\x2e\xf3\
1265+\xf7\xc9\xb3\x80\x0b\xdf\x02\xef\xc7\x09\xd3\x53\xd3\x25\xc6\x10\
1266+\xa0\x8c\x51\xbf\x63\xd2\xbf\x26\x1d\x9b\x17\x2d\xcb\x49\x55\xab\
1267+\xd6\x7f\x72\xd9\xc2\xe9\x8b\x67\xce\x8d\xbd\xf1\x56\xfa\x83\xf7\
1268+\x3f\x78\xce\xf6\xcf\x3c\x7d\xf6\xca\x26\x4a\xe9\xb9\xce\xf6\x06\
1269+\x55\x55\x19\x02\x86\x86\xda\x01\xfe\xbe\x12\x9c\x0b\xcf\x06\x3f\
1270+\xb7\x58\xac\xfe\xee\xfb\x8f\x1e\x7e\xa6\xa5\xc9\x08\xd4\x45\x99\
1271+\x5e\x2e\x73\x7b\x26\x51\xa9\x2c\x64\x4b\x95\x74\x6a\xde\x9c\x4e\
1272+\xe5\x78\xa9\xf4\x37\x89\x25\x90\x83\x07\x5f\xc6\x9e\xaf\x0f\x1e\
1273+\x6a\xa8\x0f\xfd\x50\xd7\x54\xc4\xa2\x41\xef\xce\xaf\x4f\xf6\x8a\
1274+\xf5\x6b\x39\xa6\x65\x7b\x42\x3c\x11\x53\xc9\x54\xb6\x67\xcb\xe6\
1275+\x6e\x8e\x55\x42\xef\xda\xf3\xd5\x90\x7b\xd7\x0f\x12\x10\xff\x10\
1276+\x42\xe0\xdf\x91\x10\xb2\xd6\xc2\x95\xc3\xb7\x81\x0b\xd4\x22\xee\
1277+\xda\xb8\x03\x6b\x80\x56\x4d\x3e\xa4\x28\xac\x4d\x02\xe0\x42\xf8\
1278+\x9e\x5a\xb6\xdf\xd2\x55\x85\x10\x7e\x61\x5f\x0c\x40\xbc\xd7\x37\
1279+\xb1\x06\x94\xab\x33\xe9\xab\x5c\xf0\xcb\x5d\x9d\x8d\x7d\xde\xec\
1280+\x58\x96\xed\x77\x40\x53\x59\x6d\xf0\x96\x47\xd6\x56\xc7\x11\xd7\
1281+\x3b\x37\x97\xce\x67\xdc\x38\xb3\xe6\x07\x93\x67\x0f\xbf\x16\x66\
1282+\x54\x19\xea\xed\x69\x19\x5e\x57\x1f\xbe\x25\x1c\xd2\x7b\x5c\x31\
1283+\x75\x94\x10\x4d\x48\x30\x21\x04\xf1\x3d\x06\xe0\x6a\x94\x12\xd7\
1284+\x86\xdb\x5d\xf2\xb6\xcd\xa7\x4b\x65\xf3\xfc\x27\x57\xe7\x4e\x65\
1285+\x16\x4b\x63\x8a\xa9\x25\x0f\x1c\xd8\xfd\xf9\x9f\x8c\x8e\x1c\x7d\
1286+\x8f\xd8\xdc\xd4\xb9\x70\xa2\x52\xca\x88\xed\xf0\x88\x90\x52\x25\
1287+\x00\xf5\x0a\x53\x10\x87\x32\x5a\x54\x18\x2b\xb8\x5a\xf2\xc2\xb2\
1288+\xab\x99\x54\x50\x1c\x3c\x38\x84\x2f\xf9\x3c\xfc\x17\xd3\x96\x9e\
1289+\xac\xde\x63\x08\x54\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\
1290+\x82\
1291+\x00\x00\x03\xef\
1292+\x89\
1293+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
1294+\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xff\x61\
1295+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
1296+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
1297+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x37\x5c\x00\x00\x37\x5c\x01\
1298+\xcb\xc7\xa4\xb9\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xd9\x07\x16\
1299+\x12\x0d\x25\xdf\xbf\xee\x00\x00\x00\x03\x6f\x49\x44\x41\x54\x38\
1300+\xcb\x4d\x92\x4b\x4c\x9c\x55\x1c\xc5\xcf\xfd\xdf\x3b\xdf\xc7\xbc\
1301+\x29\xd3\xa1\x74\x06\x0a\x42\x8b\x08\x98\x98\x31\x85\x42\x23\xa6\
1302+\xe2\xa3\x24\x2e\x9a\x98\xb6\xc6\x34\x51\x14\x8d\xb6\xc6\x95\xc6\
1303+\xc4\x44\x93\x76\xa1\x2c\x8c\x4d\x13\x16\x9a\x98\x2e\x6c\x5d\xf8\
1304+\x48\x25\x31\x4d\xa1\xb6\xa1\x4c\x4a\x02\xcc\x94\xc4\x16\xd3\x2a\
1305+\x5a\x5e\x95\x87\x14\x3a\x30\x33\x0c\xdf\xe3\xde\xeb\xa2\x25\xed\
1306+\x59\x9d\xc5\xc9\xef\x9c\xc5\x61\x2d\x07\x5b\xe1\x98\x16\x58\x81\
1307+\xc0\x36\x38\x66\xfb\x0b\x30\xcb\xdd\x60\xeb\xc1\x5d\x87\x4a\xe2\
1308+\xfe\xe7\x84\x49\xe1\x51\x77\x5c\x2e\x54\x65\x6a\x13\xe5\x4f\x6f\
1309+\x4b\xfd\x99\x5a\x98\x5e\x9d\xfe\xa4\xfb\x4c\x77\xef\x47\x5d\xaf\
1310+\x83\xcf\x26\x67\x70\xfe\xea\x2f\x08\xf8\xbc\x4c\x59\xc0\x96\x2a\
1311+\x6f\xf5\xde\xce\x9a\xde\xf8\x93\xe1\xa3\xfe\x32\x6a\xbc\x89\xbf\
1312+\x76\xdd\xdd\xee\xd4\x1d\xae\x7e\x75\xeb\xa9\x86\x53\xde\xac\x27\
1313+\x1b\xcd\xb0\xcc\xa1\xb3\xe1\xb3\x93\x97\x7f\x1a\xba\x4e\xed\x6f\
1314+\xbd\x80\xdb\x03\x19\xfc\xfa\x4d\xbf\x1e\x3c\x77\x9d\x97\xb6\x7b\
1315+\xbe\xa5\x0a\x7b\x4f\x56\xe4\xdc\x8c\x5e\xd7\xc9\xfc\x0d\xb6\x46\
1316+\x6b\x18\x9a\xef\x85\x86\xc2\xcc\xbd\x5e\x08\xb1\x46\x08\xe0\x44\
1317+\x74\x9f\x1f\xac\xe5\xfd\xdd\x60\xa6\x26\x69\x69\x45\x2e\x6f\x0b\
1318+\x37\xd1\xa0\xe9\xe5\x92\x48\x90\x30\x88\x9d\xcb\x0e\xa2\xf0\xda\
1319+\x06\x04\x09\x30\xc6\xb0\x29\xf6\x3d\xcb\xe3\x48\x57\x40\xd8\xfe\
1320+\x75\x90\x4f\x43\x2b\x00\x39\x63\x47\x5e\xba\xc8\x5b\x1a\x9c\x13\
1321+\xf3\x68\x0e\xce\x08\x45\xbd\x06\xda\x7c\xc0\x40\x87\xc6\xf1\x14\
1322+\xc3\x85\x0c\x00\x8d\xd5\xa6\xd8\x14\x84\x99\x37\x41\x50\xd0\x0e\
1323+\x40\x96\x67\xce\x67\x68\x88\x00\x63\x86\x10\x5a\x70\xce\x6a\xa6\
1324+\xb7\xe1\x66\xf8\x5f\x4c\xa8\xfb\xcd\x7d\xeb\x40\xda\x86\xc2\xdf\
1325+\xf8\x6e\x74\x2e\x01\xe1\x9d\xdf\x82\xdc\xa2\xa3\x6e\x5d\x25\xf8\
1326+\x20\x86\xdb\x5a\x72\xe3\xfe\x08\x35\x72\xe2\x8a\x11\x63\xcd\xa2\
1327+\x52\xd3\x84\x66\x19\x73\x05\x8d\x3d\x71\x00\x31\x18\xb7\xe6\x7a\
1328+\xcc\xf3\xfe\x13\xbb\xbf\xec\x07\xab\x47\x17\xf6\xf6\xfd\x01\x6d\
1329+\x71\x92\xae\x56\xd9\x7f\xa8\xb3\x6a\x9f\x71\x3a\xe8\x0b\x2a\xad\
1330+\x34\x15\x54\x1e\x2b\x19\x4b\xb9\x36\x23\x77\x51\x0e\x9f\x39\x92\
1331+\x7f\x16\xb0\xed\x27\x1e\x0f\x21\x54\x29\xc0\x12\x2f\xb6\x20\x28\
1332+\x43\x18\xbb\xbc\x8c\x2c\xd2\x00\x40\x1f\x5f\xea\xb8\x58\xbd\x33\
1333+\xd6\xae\x1d\x92\xf7\xf4\x02\xcd\x2d\xe5\x20\x73\x8c\x2d\x0d\x39\
1334+\x1d\x81\x32\xf4\x29\x80\x5c\x0b\x2a\x72\xad\x0e\xa2\xd6\xae\xc7\
1335+\x9d\x34\x70\xf8\x2b\x82\x51\xb2\x9f\x24\x6c\x35\x9b\x2a\x7c\x51\
1336+\x1e\x73\xdb\x03\x9e\x10\x71\xd7\x50\x26\xf7\xf0\xd5\x65\xe7\xc2\
1337+\x8f\xc7\xeb\xfb\x26\xf0\x1f\xab\x65\x53\x0a\xf8\x0c\x4d\x07\x3e\
1338+\x07\x03\x80\xd6\x97\x9e\xc1\xda\x6d\x1f\x16\x67\x96\xb1\x64\xa5\
1339+\x01\x14\x1b\x9f\x5e\x69\x1b\x2b\x2d\x0f\x35\x14\x9c\x82\x33\x3f\
1340+\xbf\xec\x59\x4c\xe3\xbd\x70\x15\xfb\x5a\x2b\x4d\xf6\xba\x52\xa5\
1341+\x9d\x49\x8c\x17\x7f\x70\x1f\xd0\x48\xc7\xf0\xd4\xd1\x59\xbc\xf9\
1342+\xe1\xf3\x18\xf9\x6d\x92\x4c\xd3\x50\xc9\x8b\x63\x3f\xd7\x36\x3c\
1343+\xf6\xca\x86\x65\xbb\x35\x55\x75\xe2\x64\x77\xcf\x1e\xc7\x75\x46\
1344+\xb6\x46\x23\x24\xb8\x50\xee\x6a\x09\x7e\xbf\x71\x05\x0f\x9f\xf1\
1345+\x40\xc7\xde\x79\x97\x47\xa3\x51\x39\x9a\x4e\x9d\x6e\x6d\x6e\xee\
1346+\x8c\xc5\x2b\xe5\xf6\x78\x4c\x76\xbc\xbc\xbf\x11\xc0\x84\xd7\x2c\
1347+\x62\x05\x6b\x43\x6f\xe6\x69\xd3\xc4\x62\x65\x78\xbb\xeb\x0d\x28\
1348+\xee\x62\x65\xed\x2e\xc0\x55\x6e\xdd\xc9\x43\x78\x89\x4d\xdf\x99\
1349+\x54\x00\x5c\x00\xb0\xdd\x0d\x54\x54\xc4\x1f\x3e\xf2\x91\x72\x0e\
1350+\xc0\xe0\x9c\x17\x49\x29\x79\x69\x69\x74\x47\x22\x91\xf8\x21\x1c\
1351+\x2e\xde\x39\x35\x35\xdd\x3d\x32\x32\x7c\xd2\x34\x4d\x58\x96\x55\
1352+\x00\x60\x01\x70\x00\x68\xfe\x08\xc0\x03\xc0\xa7\xb5\x0e\x12\x51\
1353+\x24\x97\xcb\x6b\xd3\x30\x87\x4a\x22\x25\x03\xc9\x64\xf2\x92\x94\
1354+\x32\x24\xa5\xdc\xcc\xcb\x07\x8b\xf4\xff\x53\xcc\x7a\xe6\x37\xb9\
1355+\xdd\x0f\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
1356 \x00\x00\x02\xfa\
1357 \x89\
1358 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
1359@@ -53815,36 +54756,93 @@
1360 \x00\x69\
1361 \x00\x6d\x00\x61\x00\x67\x00\x65\x00\x5f\x00\x6c\x00\x6f\x00\x61\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
1362 \x00\x14\
1363+\x0d\xa9\x66\x87\
1364+\x00\x62\
1365+\x00\x6f\x00\x6f\x00\x6b\x00\x5f\x00\x6d\x00\x61\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x2e\
1366+\x00\x70\x00\x6e\x00\x67\
1367+\x00\x0d\
1368+\x0f\xce\xfd\xc7\
1369+\x00\x73\
1370+\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1371+\x00\x0f\
1372+\x00\x8e\xa2\x87\
1373+\x00\x62\
1374+\x00\x6f\x00\x6f\x00\x6b\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
1375+\x00\x13\
1376+\x0e\x4b\x25\x27\
1377+\x00\x73\
1378+\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x74\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\
1379+\x00\x6e\x00\x67\
1380+\x00\x0f\
1381+\x0e\xea\xff\x07\
1382+\x00\x61\
1383+\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1384+\x00\x0f\
1385+\x05\x0e\x96\x87\
1386+\x00\x73\
1387+\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
1388+\x00\x0e\
1389+\x0e\xf9\x8d\xc7\
1390+\x00\x61\
1391+\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x5f\x00\x61\x00\x64\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
1392+\x00\x0d\
1393+\x09\xcb\x7d\x87\
1394+\x00\x62\
1395+\x00\x6f\x00\x6f\x00\x6b\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1396+\x00\x11\
1397+\x01\x10\xd4\xc7\
1398+\x00\x61\
1399+\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
1400+\
1401+\x00\x0f\
1402+\x0f\x3d\x20\x27\
1403+\x00\x73\
1404+\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x78\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1405+\x00\x14\
1406 \x07\xde\x82\x27\
1407 \x00\x73\
1408 \x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x61\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\
1409 \x00\x70\x00\x6e\x00\x67\
1410+\x00\x10\
1411+\x03\x95\xc6\xa7\
1412+\x00\x74\
1413+\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
1414 \x00\x0c\
1415 \x0b\x86\xcd\x87\
1416 \x00\x73\
1417 \x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x6e\x00\x65\x00\x77\x00\x2e\x00\x70\x00\x6e\x00\x67\
1418-\x00\x0d\
1419-\x0f\xce\xfd\xc7\
1420-\x00\x73\
1421-\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1422+\x00\x0c\
1423+\x0a\x8b\x95\xe7\
1424+\x00\x62\
1425+\x00\x6f\x00\x6f\x00\x6b\x00\x5f\x00\x61\x00\x64\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
1426+\x00\x15\
1427+\x0f\xc6\x09\x07\
1428+\x00\x74\
1429+\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x6d\x00\x61\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x61\x00\x6e\x00\x63\x00\x65\
1430+\x00\x2e\x00\x70\x00\x6e\x00\x67\
1431 \x00\x12\
1432 \x07\x52\x49\x67\
1433 \x00\x73\
1434 \x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x62\x00\x6f\x00\x6f\x00\x6b\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\
1435 \x00\x67\
1436-\x00\x0f\
1437-\x0f\x3d\x20\x27\
1438-\x00\x73\
1439-\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x65\x00\x78\x00\x70\x00\x6f\x00\x72\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1440-\x00\x13\
1441-\x0e\x4b\x25\x27\
1442-\x00\x73\
1443-\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x74\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\
1444-\x00\x6e\x00\x67\
1445-\x00\x0f\
1446-\x05\x0e\x96\x87\
1447-\x00\x73\
1448-\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x64\x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
1449+\x00\x0e\
1450+\x07\xd8\x62\xe7\
1451+\x00\x74\
1452+\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x65\x00\x64\x00\x69\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
1453+\x00\x14\
1454+\x0d\x19\x6f\x07\
1455+\x00\x73\
1456+\x00\x6f\x00\x6e\x00\x67\x00\x5f\x00\x6d\x00\x61\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x61\x00\x6e\x00\x63\x00\x65\x00\x2e\
1457+\x00\x70\x00\x6e\x00\x67\
1458+\x00\x16\
1459+\x01\x98\xb7\xc7\
1460+\x00\x61\
1461+\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x5f\x00\x6d\x00\x61\x00\x69\x00\x6e\x00\x74\x00\x65\x00\x6e\x00\x61\x00\x6e\x00\x63\
1462+\x00\x65\x00\x2e\x00\x70\x00\x6e\x00\x67\
1463+\x00\x0d\
1464+\x01\x6a\xa4\x07\
1465+\x00\x74\
1466+\x00\x6f\x00\x70\x00\x69\x00\x63\x00\x5f\x00\x61\x00\x64\x00\x64\x00\x2e\x00\x70\x00\x6e\x00\x67\
1467 \x00\x0f\
1468 \x00\xe4\x12\x87\
1469 \x00\x74\
1470@@ -53929,10 +54927,10 @@
1471
1472 qt_resource_struct = "\
1473 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x01\
1474-\x00\x00\x00\xa6\x00\x02\x00\x00\x00\x06\x00\x00\x00\x59\
1475-\x00\x00\x00\x38\x00\x02\x00\x00\x00\x04\x00\x00\x00\x55\
1476-\x00\x00\x01\x02\x00\x02\x00\x00\x00\x08\x00\x00\x00\x4d\
1477-\x00\x00\x00\x5c\x00\x02\x00\x00\x00\x07\x00\x00\x00\x46\
1478+\x00\x00\x00\xa6\x00\x02\x00\x00\x00\x06\x00\x00\x00\x66\
1479+\x00\x00\x00\x38\x00\x02\x00\x00\x00\x04\x00\x00\x00\x62\
1480+\x00\x00\x01\x02\x00\x02\x00\x00\x00\x08\x00\x00\x00\x5a\
1481+\x00\x00\x00\x5c\x00\x02\x00\x00\x00\x14\x00\x00\x00\x46\
1482 \x00\x00\x00\x4c\x00\x02\x00\x00\x00\x02\x00\x00\x00\x44\
1483 \x00\x00\x01\x12\x00\x02\x00\x00\x00\x02\x00\x00\x00\x42\
1484 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x3f\
1485@@ -53947,10 +54945,10 @@
1486 \x00\x00\x00\x24\x00\x02\x00\x00\x00\x04\x00\x00\x00\x13\
1487 \x00\x00\x00\xc6\x00\x02\x00\x00\x00\x01\x00\x00\x00\x12\
1488 \x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x55\x3f\
1489-\x00\x00\x0b\xde\x00\x00\x00\x00\x00\x01\x00\x0c\xe6\x2d\
1490-\x00\x00\x0c\x12\x00\x00\x00\x00\x00\x01\x00\x0c\xe9\x8f\
1491-\x00\x00\x0c\x3a\x00\x00\x00\x00\x00\x01\x00\x0c\xec\x2d\
1492-\x00\x00\x0c\x68\x00\x00\x00\x00\x00\x01\x00\x0c\xef\x41\
1493+\x00\x00\x0d\xd4\x00\x00\x00\x00\x00\x01\x00\x0d\x1f\x3e\
1494+\x00\x00\x0e\x08\x00\x00\x00\x00\x00\x01\x00\x0d\x22\xa0\
1495+\x00\x00\x0e\x30\x00\x00\x00\x00\x00\x01\x00\x0d\x25\x3e\
1496+\x00\x00\x0e\x5e\x00\x00\x00\x00\x00\x01\x00\x0d\x28\x52\
1497 \x00\x00\x05\xbc\x00\x00\x00\x00\x00\x01\x00\x00\x4a\xfb\
1498 \x00\x00\x05\xe2\x00\x00\x00\x00\x00\x01\x00\x00\x4d\x32\
1499 \x00\x00\x06\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x52\x74\
1500@@ -53984,27 +54982,40 @@
1501 \x00\x00\x06\xd0\x00\x00\x00\x00\x00\x01\x00\x02\xfc\x9c\
1502 \x00\x00\x06\xf6\x00\x00\x00\x00\x00\x01\x00\x02\xff\x14\
1503 \x00\x00\x06\x8a\x00\x00\x00\x00\x00\x01\x00\x02\xf6\x21\
1504-\x00\x00\x0d\x18\x00\x00\x00\x00\x00\x01\x00\x0c\xfb\xcb\
1505-\x00\x00\x0c\xae\x00\x00\x00\x00\x00\x01\x00\x0c\xf3\xf6\
1506-\x00\x00\x0c\xd2\x00\x00\x00\x00\x00\x01\x00\x0c\xf6\x87\
1507-\x00\x00\x0c\xf4\x00\x00\x00\x00\x00\x01\x00\x0c\xf8\x9a\
1508-\x00\x00\x0c\x8c\x00\x00\x00\x00\x00\x01\x00\x0c\xf1\x58\
1509+\x00\x00\x0f\x0e\x00\x00\x00\x00\x00\x01\x00\x0d\x34\xdc\
1510+\x00\x00\x0e\xa4\x00\x00\x00\x00\x00\x01\x00\x0d\x2d\x07\
1511+\x00\x00\x0e\xc8\x00\x00\x00\x00\x00\x01\x00\x0d\x2f\x98\
1512+\x00\x00\x0e\xea\x00\x00\x00\x00\x00\x01\x00\x0d\x31\xab\
1513+\x00\x00\x0e\x82\x00\x00\x00\x00\x00\x01\x00\x0d\x2a\x69\
1514 \x00\x00\x09\xc0\x00\x00\x00\x00\x00\x01\x00\x0c\xc1\x6c\
1515 \x00\x00\x09\x9a\x00\x00\x00\x00\x00\x01\x00\x0c\xbe\xce\
1516-\x00\x00\x0d\x66\x00\x00\x00\x00\x00\x01\x00\x0d\x00\x6f\
1517-\x00\x00\x0d\x8e\x00\x00\x00\x00\x00\x01\x00\x0d\x03\x0d\
1518-\x00\x00\x0d\x42\x00\x00\x00\x00\x00\x01\x00\x0c\xfd\xcf\
1519+\x00\x00\x0f\x5c\x00\x00\x00\x00\x00\x01\x00\x0d\x39\x80\
1520+\x00\x00\x0f\x84\x00\x00\x00\x00\x00\x01\x00\x0d\x3c\x1e\
1521+\x00\x00\x0f\x38\x00\x00\x00\x00\x00\x01\x00\x0d\x36\xe0\
1522 \x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00\x09\x05\
1523 \x00\x00\x02\x12\x00\x00\x00\x00\x00\x01\x00\x00\x0b\xa3\
1524-\x00\x00\x0a\xec\x00\x00\x00\x00\x00\x01\x00\x0c\xd5\x81\
1525-\x00\x00\x0b\x10\x00\x00\x00\x00\x00\x01\x00\x0c\xd8\x7f\
1526-\x00\x00\x0a\xc8\x00\x00\x00\x00\x00\x01\x00\x0c\xd2\xe3\
1527-\x00\x00\x0a\x4e\x00\x00\x00\x00\x00\x01\x00\x0c\xca\xea\
1528+\x00\x00\x0c\xe2\x00\x00\x00\x00\x00\x01\x00\x0d\x0e\x92\
1529+\x00\x00\x0d\x06\x00\x00\x00\x00\x00\x01\x00\x0d\x11\x90\
1530+\x00\x00\x0a\x30\x00\x00\x00\x00\x00\x01\x00\x0c\xcc\xe1\
1531+\x00\x00\x0b\x0a\x00\x00\x00\x00\x00\x01\x00\x0c\xdf\x7a\
1532+\x00\x00\x0c\xc2\x00\x00\x00\x00\x00\x01\x00\x0d\x0a\x9f\
1533+\x00\x00\x0c\x90\x00\x00\x00\x00\x00\x01\x00\x0d\x03\x89\
1534+\x00\x00\x0b\x84\x00\x00\x00\x00\x00\x01\x00\x0c\xe7\xda\
1535+\x00\x00\x0a\xa4\x00\x00\x00\x00\x00\x01\x00\x0c\xd6\x88\
1536+\x00\x00\x0c\x16\x00\x00\x00\x00\x00\x01\x00\x0c\xfa\x7d\
1537+\x00\x00\x0c\x40\x00\x00\x00\x00\x00\x01\x00\x0c\xfc\xb2\
1538+\x00\x00\x0b\x56\x00\x00\x00\x00\x00\x01\x00\x0c\xe5\x5a\
1539+\x00\x00\x0a\xea\x00\x00\x00\x00\x00\x01\x00\x0c\xdc\x6e\
1540+\x00\x00\x0b\xc8\x00\x00\x00\x00\x00\x01\x00\x0c\xee\x33\
1541+\x00\x00\x0b\xaa\x00\x00\x00\x00\x00\x01\x00\x0c\xeb\xec\
1542+\x00\x00\x0c\x62\x00\x00\x00\x00\x00\x01\x00\x0d\x00\xb6\
1543 \x00\x00\x09\xe2\x00\x00\x00\x00\x00\x01\x00\x0c\xc3\x83\
1544-\x00\x00\x0a\x10\x00\x00\x00\x00\x00\x01\x00\x0c\xc6\x03\
1545-\x00\x00\x0a\x9c\x00\x00\x00\x00\x00\x01\x00\x0c\xcf\xa1\
1546-\x00\x00\x0a\x78\x00\x00\x00\x00\x00\x01\x00\x0c\xcd\x1f\
1547-\x00\x00\x0a\x2e\x00\x00\x00\x00\x00\x01\x00\x0c\xc8\x4a\
1548+\x00\x00\x0a\x54\x00\x00\x00\x00\x00\x01\x00\x0c\xcf\xcd\
1549+\x00\x00\x0a\x80\x00\x00\x00\x00\x00\x01\x00\x0c\xd3\x0f\
1550+\x00\x00\x0a\xc8\x00\x00\x00\x00\x00\x01\x00\x0c\xd9\x26\
1551+\x00\x00\x0b\x32\x00\x00\x00\x00\x00\x01\x00\x0c\xe2\xd8\
1552+\x00\x00\x0b\xe6\x00\x00\x00\x00\x00\x01\x00\x0c\xf0\xd5\
1553+\x00\x00\x0a\x10\x00\x00\x00\x00\x00\x01\x00\x0c\xca\x41\
1554 \x00\x00\x02\x66\x00\x00\x00\x00\x00\x01\x00\x00\x10\x0c\
1555 \x00\x00\x02\xd2\x00\x00\x00\x00\x00\x01\x00\x00\x17\xff\
1556 \x00\x00\x03\x04\x00\x00\x00\x00\x00\x01\x00\x00\x1a\x2a\
1557@@ -54013,10 +55024,10 @@
1558 \x00\x00\x03\x4a\x00\x00\x00\x00\x00\x01\x00\x00\x20\x24\
1559 \x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x0d\xba\
1560 \x00\x00\x03\x26\x00\x00\x00\x00\x00\x01\x00\x00\x1c\x8d\
1561-\x00\x00\x0b\x30\x00\x00\x00\x00\x00\x01\x00\x0c\xdb\x02\
1562-\x00\x00\x0b\x92\x00\x00\x00\x00\x00\x01\x00\x0c\xe1\x78\
1563-\x00\x00\x0b\x64\x00\x00\x00\x00\x00\x01\x00\x0c\xde\x64\
1564-\x00\x00\x0b\xba\x00\x00\x00\x00\x00\x01\x00\x0c\xe4\x16\
1565+\x00\x00\x0d\x26\x00\x00\x00\x00\x00\x01\x00\x0d\x14\x13\
1566+\x00\x00\x0d\x88\x00\x00\x00\x00\x00\x01\x00\x0d\x1a\x89\
1567+\x00\x00\x0d\x5a\x00\x00\x00\x00\x00\x01\x00\x0d\x17\x75\
1568+\x00\x00\x0d\xb0\x00\x00\x00\x00\x00\x01\x00\x0d\x1d\x27\
1569 \x00\x00\x07\xce\x00\x00\x00\x00\x00\x01\x00\x03\x3e\xa4\
1570 \x00\x00\x07\x6e\x00\x00\x00\x00\x00\x01\x00\x03\x0f\x64\
1571 \x00\x00\x07\x3e\x00\x00\x00\x00\x00\x01\x00\x03\x04\xd0\
1572
1573=== modified file 'openlp/plugins/songs/forms/__init__.py'
1574--- openlp/plugins/songs/forms/__init__.py 2009-06-03 17:32:53 +0000
1575+++ openlp/plugins/songs/forms/__init__.py 2009-07-23 20:20:49 +0000
1576@@ -23,6 +23,7 @@
1577 from songbookform import SongBookForm
1578 from editverseform import EditVerseForm
1579 from editsongform import EditSongForm
1580+from songmaintenanceform import SongMaintenanceForm
1581
1582 from openlpexportform import OpenLPExportForm
1583 from openlpimportform import OpenLPImportForm
1584
1585=== modified file 'openlp/plugins/songs/forms/authorsdialog.py'
1586--- openlp/plugins/songs/forms/authorsdialog.py 2009-06-14 15:12:40 +0000
1587+++ openlp/plugins/songs/forms/authorsdialog.py 2009-07-24 22:13:40 +0000
1588@@ -23,99 +23,56 @@
1589 class Ui_AuthorsDialog(object):
1590 def setupUi(self, AuthorsDialog):
1591 AuthorsDialog.setObjectName(u'AuthorsDialog')
1592- AuthorsDialog.resize(410, 505)
1593- self.DialogLayout = QtGui.QVBoxLayout(AuthorsDialog)
1594- self.DialogLayout.setSpacing(8)
1595- self.DialogLayout.setMargin(8)
1596- self.DialogLayout.setObjectName(u'DialogLayout')
1597- self.AuthorListWidget = QtGui.QListWidget()
1598- self.AuthorListWidget.setAlternatingRowColors(True)
1599- self.DialogLayout.addWidget(self.AuthorListWidget)
1600- self.AuthorDetails = QtGui.QGroupBox(AuthorsDialog)
1601- self.AuthorDetails.setMinimumSize(QtCore.QSize(0, 0))
1602- self.AuthorDetails.setObjectName(u'AuthorDetails')
1603- self.AuthorLayout = QtGui.QVBoxLayout(self.AuthorDetails)
1604- self.AuthorLayout.setSpacing(8)
1605- self.AuthorLayout.setMargin(8)
1606- self.AuthorLayout.setObjectName(u'AuthorLayout')
1607- self.DetailsWidget = QtGui.QWidget(self.AuthorDetails)
1608- self.DetailsWidget.setObjectName(u'DetailsWidget')
1609- self.DetailsLayout = QtGui.QFormLayout(self.DetailsWidget)
1610- self.DetailsLayout.setMargin(0)
1611- self.DetailsLayout.setSpacing(8)
1612- self.DetailsLayout.setObjectName(u'DetailsLayout')
1613- self.DisplayLabel = QtGui.QLabel(self.DetailsWidget)
1614- self.DisplayLabel.setObjectName(u'DisplayLabel')
1615- self.DetailsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.DisplayLabel)
1616- self.DisplayEdit = QtGui.QLineEdit(self.DetailsWidget)
1617- self.DisplayEdit.setObjectName(u'DisplayEdit')
1618- self.DetailsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.DisplayEdit)
1619- self.FirstNameLabel = QtGui.QLabel(self.DetailsWidget)
1620+ AuthorsDialog.resize(393, 147)
1621+ self.AuthorsLayout = QtGui.QFormLayout(AuthorsDialog)
1622+ self.AuthorsLayout.setMargin(8)
1623+ self.AuthorsLayout.setSpacing(8)
1624+ self.AuthorsLayout.setObjectName(u'AuthorsLayout')
1625+ self.FirstNameLabel = QtGui.QLabel(AuthorsDialog)
1626 self.FirstNameLabel.setObjectName(u'FirstNameLabel')
1627- self.DetailsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.FirstNameLabel)
1628- self.FirstNameEdit = QtGui.QLineEdit(self.DetailsWidget)
1629+ self.AuthorsLayout.setWidget(0,
1630+ QtGui.QFormLayout.LabelRole, self.FirstNameLabel)
1631+ self.FirstNameEdit = QtGui.QLineEdit(AuthorsDialog)
1632 self.FirstNameEdit.setObjectName(u'FirstNameEdit')
1633- self.DetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.FirstNameEdit)
1634- self.LastNameLabel = QtGui.QLabel(self.DetailsWidget)
1635+ self.AuthorsLayout.setWidget(0,
1636+ QtGui.QFormLayout.FieldRole, self.FirstNameEdit)
1637+ self.LastNameLabel = QtGui.QLabel(AuthorsDialog)
1638 self.LastNameLabel.setObjectName(u'LastNameLabel')
1639- self.DetailsLayout.setWidget(2, QtGui.QFormLayout.LabelRole, self.LastNameLabel)
1640- self.LastNameEdit = QtGui.QLineEdit(self.DetailsWidget)
1641+ self.AuthorsLayout.setWidget(1,
1642+ QtGui.QFormLayout.LabelRole, self.LastNameLabel)
1643+ self.LastNameEdit = QtGui.QLineEdit(AuthorsDialog)
1644 self.LastNameEdit.setObjectName(u'LastNameEdit')
1645- self.DetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.LastNameEdit)
1646- self.AuthorLayout.addWidget(self.DetailsWidget)
1647- self.MessageLabel = QtGui.QLabel(self.AuthorDetails)
1648- self.MessageLabel.setObjectName(u'MessageLabel')
1649- self.AuthorLayout.addWidget(self.MessageLabel)
1650- self.ButtonWidget = QtGui.QWidget(self.AuthorDetails)
1651- self.ButtonWidget.setMinimumSize(QtCore.QSize(0, 0))
1652- self.ButtonWidget.setObjectName(u'ButtonWidget')
1653- self.ButtonLayout = QtGui.QHBoxLayout(self.ButtonWidget)
1654- self.ButtonLayout.setSpacing(8)
1655- self.ButtonLayout.setMargin(0)
1656- self.ButtonLayout.setObjectName(u'ButtonLayout')
1657- spacerItem = QtGui.QSpacerItem(198, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
1658- self.ButtonLayout.addItem(spacerItem)
1659- self.ClearButton = QtGui.QPushButton(self.ButtonWidget)
1660- icon = QtGui.QIcon()
1661- icon.addPixmap(QtGui.QPixmap(u':/services/service_new.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
1662- self.ClearButton.setIcon(icon)
1663- self.ClearButton.setObjectName(u'ClearButton')
1664- self.ButtonLayout.addWidget(self.ClearButton)
1665- self.AddUpdateButton = QtGui.QPushButton(self.ButtonWidget)
1666- icon1 = QtGui.QIcon()
1667- icon1.addPixmap(QtGui.QPixmap(u':/services/service_save.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
1668- self.AddUpdateButton.setIcon(icon1)
1669- self.AddUpdateButton.setObjectName(u'AddUpdateButton')
1670- self.ButtonLayout.addWidget(self.AddUpdateButton)
1671- self.DeleteButton = QtGui.QPushButton(self.ButtonWidget)
1672- icon2 = QtGui.QIcon()
1673- icon2.addPixmap(QtGui.QPixmap(u':/services/service_delete.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
1674- self.DeleteButton.setIcon(icon2)
1675- self.DeleteButton.setObjectName(u'DeleteButton')
1676- self.ButtonLayout.addWidget(self.DeleteButton)
1677- self.AuthorLayout.addWidget(self.ButtonWidget)
1678- self.DialogLayout.addWidget(self.AuthorDetails)
1679- self.buttonBox = QtGui.QDialogButtonBox(AuthorsDialog)
1680- self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
1681- self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok)
1682- self.buttonBox.setObjectName(u'buttonBox')
1683- self.DialogLayout.addWidget(self.buttonBox)
1684+ self.AuthorsLayout.setWidget(1,
1685+ QtGui.QFormLayout.FieldRole, self.LastNameEdit)
1686+ self.DisplayLabel = QtGui.QLabel(AuthorsDialog)
1687+ self.DisplayLabel.setObjectName(u'DisplayLabel')
1688+ self.AuthorsLayout.setWidget(2,
1689+ QtGui.QFormLayout.LabelRole, self.DisplayLabel)
1690+ self.DisplayEdit = QtGui.QLineEdit(AuthorsDialog)
1691+ self.DisplayEdit.setObjectName(u'DisplayEdit')
1692+ self.AuthorsLayout.setWidget(2,
1693+ QtGui.QFormLayout.FieldRole, self.DisplayEdit)
1694+ self.AuthorButtonBox = QtGui.QDialogButtonBox(AuthorsDialog)
1695+ self.AuthorButtonBox.setOrientation(QtCore.Qt.Horizontal)
1696+ self.AuthorButtonBox.setStandardButtons(
1697+ QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save)
1698+ self.AuthorButtonBox.setObjectName(u'AuthorButtonBox')
1699+ self.AuthorsLayout.setWidget(3,
1700+ QtGui.QFormLayout.FieldRole, self.AuthorButtonBox)
1701
1702 self.retranslateUi(AuthorsDialog)
1703- QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), AuthorsDialog.accept)
1704- QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), AuthorsDialog.reject)
1705+ QtCore.QObject.connect(self.AuthorButtonBox,
1706+ QtCore.SIGNAL(u'accepted()'), AuthorsDialog.accept)
1707+ QtCore.QObject.connect(self.AuthorButtonBox,
1708+ QtCore.SIGNAL(u'rejected()'), AuthorsDialog.reject)
1709 QtCore.QMetaObject.connectSlotsByName(AuthorsDialog)
1710
1711 def retranslateUi(self, AuthorsDialog):
1712- AuthorsDialog.setWindowTitle(translate(u'AuthorsDialog', u'Author Maintenance'))
1713- self.AuthorDetails.setTitle(translate(u'AuthorsDialog', u'Author Details'))
1714- self.DisplayLabel.setText(translate(u'AuthorsDialog', u'Display Name:'))
1715- self.FirstNameLabel.setText(translate(u'AuthorsDialog', u'First Name:'))
1716- self.LastNameLabel.setText(translate(u'AuthorsDialog', u'Last Name:'))
1717- self.ClearButton.setToolTip(translate(u'AuthorsDialog', u'Clear Selection'))
1718- self.ClearButton.setText(translate(u'AuthorsDialog', u'Clear'))
1719- self.AddUpdateButton.setToolTip(translate(u'AuthorsDialog', u'Add Update Author'))
1720- self.AddUpdateButton.setText(translate(u'AuthorsDialog', u'Save'))
1721- self.DeleteButton.setToolTip(translate(u'AuthorsDialog', u'Delete Author'))
1722- self.DeleteButton.setText(translate(u'AuthorsDialog', u'Delete'))
1723- self.buttonBox.setToolTip(translate(u'AuthorsDialog', u'Exit Screen'))
1724+ AuthorsDialog.setWindowTitle(
1725+ translate(u'AuthorsDialog', u'Author Maintenance'))
1726+ self.DisplayLabel.setText(
1727+ translate(u'AuthorsDialog', u'Display name:'))
1728+ self.FirstNameLabel.setText(
1729+ translate(u'AuthorsDialog', u'First name:'))
1730+ self.LastNameLabel.setText(
1731+ translate(u'AuthorsDialog', u'Last name:'))
1732
1733=== modified file 'openlp/plugins/songs/forms/authorsform.py'
1734--- openlp/plugins/songs/forms/authorsform.py 2009-07-18 05:43:50 +0000
1735+++ openlp/plugins/songs/forms/authorsform.py 2009-07-24 20:40:34 +0000
1736@@ -18,121 +18,142 @@
1737 """
1738 from PyQt4 import QtGui, QtCore
1739 from openlp.core.lib import translate
1740-from openlp.plugins.songs.forms.authorsdialog import Ui_AuthorsDialog
1741-from openlp.plugins.songs.lib.classes import Author
1742+from authorsdialog import Ui_AuthorsDialog
1743
1744 class AuthorsForm(QtGui.QDialog, Ui_AuthorsDialog):
1745 """
1746 Class to control the Maintenance of Authors Dialog
1747 """
1748- def __init__(self, songmanager, parent = None):
1749+ def __init__(self, parent=None):
1750 """
1751 Set up the screen and common data
1752 """
1753 QtGui.QDialog.__init__(self, parent)
1754 self.setupUi(self)
1755- self.songmanager = songmanager
1756- self.currentRow = 0
1757- self.author = None
1758-
1759- QtCore.QObject.connect(self.DeleteButton,
1760- QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick)
1761- QtCore.QObject.connect(self.ClearButton,
1762- QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick)
1763- QtCore.QObject.connect(self.AddUpdateButton,
1764- QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick)
1765- QtCore.QObject.connect(self.DisplayEdit,
1766- QtCore.SIGNAL(u'lostFocus()'), self.onDisplayEditLostFocus)
1767- QtCore.QObject.connect(self.AuthorListWidget,
1768- QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onAuthorListWidgetItemClicked)
1769-
1770- def load_form(self):
1771- """
1772- Refresh the screen and rest fields
1773- """
1774- self.AuthorListWidget.clear()
1775- # tidy up screen
1776- self.onClearButtonClick()
1777- authors = self.songmanager.get_authors()
1778- for author in authors:
1779- author_name = QtGui.QListWidgetItem(author.display_name)
1780- author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
1781- self.AuthorListWidget.addItem(author_name)
1782- if self.currentRow >= self.AuthorListWidget.count() :
1783- self.AuthorListWidget.setCurrentRow(self.AuthorListWidget.count() - 1)
1784- else:
1785- self.AuthorListWidget.setCurrentRow(self.currentRow)
1786- self._validate_form()
1787-
1788- def onDeleteButtonClick(self):
1789- """
1790- Delete the author is the Author is not attached to any songs
1791- """
1792- self.songmanager.delete_author(self.author.id)
1793- self.load_form()
1794-
1795- def onDisplayEditLostFocus(self):
1796- self._validate_form()
1797-
1798- def onAddUpdateButtonClick(self):
1799- """
1800- Sent New or update details to the database
1801- """
1802- if self.author == None:
1803- self.author = Author()
1804- self.author.display_name = unicode(self.DisplayEdit.displayText())
1805- self.author.first_name = unicode(self.FirstNameEdit.displayText())
1806- self.author.last_name = unicode(self.LastNameEdit.displayText())
1807- self.songmanager.save_author(self.author)
1808- self.onClearButtonClick()
1809- self.load_form()
1810-
1811- def onClearButtonClick(self):
1812- """
1813- Tidy up screen if clear button pressed
1814- """
1815- self.DisplayEdit.setText(u'')
1816- self.FirstNameEdit.setText(u'')
1817- self.LastNameEdit.setText(u'')
1818- self.MessageLabel.setText(u'')
1819- self.DeleteButton.setEnabled(False)
1820- self.author = None
1821- self._validate_form()
1822- self.DisplayEdit.setFocus()
1823-
1824- def onAuthorListWidgetItemClicked(self, index):
1825- """
1826- An Author has been selected display it
1827- If the author is attached to a Song prevent delete
1828- """
1829- self.currentRow = self.AuthorListWidget.currentRow()
1830- item = self.AuthorListWidget.currentItem()
1831- item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
1832- self.author = self.songmanager.get_author(item_id)
1833- self.DisplayEdit.setText(self.author.display_name)
1834- if self.author.first_name is None:
1835- self.FirstNameEdit.setText(u'')
1836- else:
1837- self.FirstNameEdit.setText(self.author.first_name)
1838- if self.author.last_name is None:
1839- self.LastNameEdit.setText(u'')
1840- else:
1841- self.LastNameEdit.setText(self.author.last_name)
1842- if len(self.author.songs) > 0:
1843- self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled'))
1844- self.DeleteButton.setEnabled(False)
1845- else:
1846- self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used'))
1847- self.DeleteButton.setEnabled(True)
1848- self._validate_form()
1849- self.DisplayEdit.setFocus()
1850-
1851- def _validate_form(self):
1852- """
1853- Validate the form and set if Add button if valid.
1854- """
1855- # We need at lease a display name
1856- if len(self.DisplayEdit.displayText()) == 0:
1857- self.AddUpdateButton.setEnabled(False)
1858- else:
1859- self.AddUpdateButton.setEnabled(True)
1860+ self.autoDisplayName = False
1861+ QtCore.QObject.connect(self.FirstNameEdit,
1862+ QtCore.SIGNAL(u'textEdited(QString)'), self.onFirstNameEditTextEdited)
1863+ QtCore.QObject.connect(self.LastNameEdit,
1864+ QtCore.SIGNAL(u'textEdited(QString)'), self.onLastNameEditTextEdited)
1865+
1866+ def exec_(self, clear=True):
1867+ if clear:
1868+ self.FirstNameEdit.clear()
1869+ self.LastNameEdit.clear()
1870+ self.DisplayEdit.clear()
1871+ self.FirstNameEdit.setFocus()
1872+ return QtGui.QDialog.exec_(self)
1873+
1874+ def onFirstNameEditTextEdited(self, text):
1875+ if not self.autoDisplayName:
1876+ return
1877+ display_name = text
1878+ if self.LastNameEdit.text() != u'':
1879+ display_name = display_name + u' ' + self.LastNameEdit.text()
1880+ self.DisplayEdit.setText(display_name)
1881+
1882+ def onLastNameEditTextEdited(self, text):
1883+ if not self.autoDisplayName:
1884+ return
1885+ display_name = text
1886+ if self.FirstNameEdit.text() != u'':
1887+ display_name = self.FirstNameEdit.text() + u' ' + display_name
1888+ self.DisplayEdit.setText(display_name)
1889+
1890+ def autoDisplayName(self):
1891+ return self.autoDisplayName
1892+
1893+ def setAutoDisplayName(self, on):
1894+ self.autoDisplayName = on
1895+
1896+
1897+# def load_form(self):
1898+# """
1899+# Refresh the screen and rest fields
1900+# """
1901+# self.AuthorListWidget.clear()
1902+# # tidy up screen
1903+# self.onClearButtonClick()
1904+# authors = self.songmanager.get_authors()
1905+# for author in authors:
1906+# author_name = QtGui.QListWidgetItem(author.display_name)
1907+# author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
1908+# self.AuthorListWidget.addItem(author_name)
1909+# if self.currentRow >= self.AuthorListWidget.count() :
1910+# self.AuthorListWidget.setCurrentRow(self.AuthorListWidget.count() - 1)
1911+# else:
1912+# self.AuthorListWidget.setCurrentRow(self.currentRow)
1913+# self._validate_form()
1914+#
1915+# def onDeleteButtonClick(self):
1916+# """
1917+# Delete the author is the Author is not attached to any songs
1918+# """
1919+# self.songmanager.delete_author(self.author.id)
1920+# self.load_form()
1921+#
1922+# def onDisplayEditLostFocus(self):
1923+# self._validate_form()
1924+#
1925+# def onAddUpdateButtonClick(self):
1926+# """
1927+# Sent New or update details to the database
1928+# """
1929+# if self.author == None:
1930+# self.author = Author()
1931+# self.author.display_name = unicode(self.DisplayEdit.displayText())
1932+# self.author.first_name = unicode(self.FirstNameEdit.displayText())
1933+# self.author.last_name = unicode(self.LastNameEdit.displayText())
1934+# self.songmanager.save_author(self.author)
1935+# self.onClearButtonClick()
1936+# self.load_form()
1937+#
1938+# def onClearButtonClick(self):
1939+# """
1940+# Tidy up screen if clear button pressed
1941+# """
1942+# self.DisplayEdit.setText(u'')
1943+# self.FirstNameEdit.setText(u'')
1944+# self.LastNameEdit.setText(u'')
1945+# self.MessageLabel.setText(u'')
1946+# self.DeleteButton.setEnabled(False)
1947+# self.author = None
1948+# self._validate_form()
1949+# self.DisplayEdit.setFocus()
1950+#
1951+# def onAuthorListWidgetItemClicked(self, index):
1952+# """
1953+# An Author has been selected display it
1954+# If the author is attached to a Song prevent delete
1955+# """
1956+# self.currentRow = self.AuthorListWidget.currentRow()
1957+# item = self.AuthorListWidget.currentItem()
1958+# item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
1959+# self.author = self.songmanager.get_author(item_id)
1960+# self.DisplayEdit.setText(self.author.display_name)
1961+# if self.author.first_name is None:
1962+# self.FirstNameEdit.setText(u'')
1963+# else:
1964+# self.FirstNameEdit.setText(self.author.first_name)
1965+# if self.author.last_name is None:
1966+# self.LastNameEdit.setText(u'')
1967+# else:
1968+# self.LastNameEdit.setText(self.author.last_name)
1969+# if len(self.author.songs) > 0:
1970+# self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled'))
1971+# self.DeleteButton.setEnabled(False)
1972+# else:
1973+# self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used'))
1974+# self.DeleteButton.setEnabled(True)
1975+# self._validate_form()
1976+# self.DisplayEdit.setFocus()
1977+#
1978+# def _validate_form(self):
1979+# """
1980+# Validate the form and set if Add button if valid.
1981+# """
1982+# # We need at lease a display name
1983+# if len(self.DisplayEdit.displayText()) == 0:
1984+# self.AddUpdateButton.setEnabled(False)
1985+# else:
1986+# self.AddUpdateButton.setEnabled(True)
1987
1988=== modified file 'openlp/plugins/songs/forms/songbookdialog.py'
1989--- openlp/plugins/songs/forms/songbookdialog.py 2009-06-14 15:12:40 +0000
1990+++ openlp/plugins/songs/forms/songbookdialog.py 2009-07-24 22:13:40 +0000
1991@@ -23,97 +23,46 @@
1992 class Ui_SongBookDialog(object):
1993 def setupUi(self, SongBookDialog):
1994 SongBookDialog.setObjectName(u'SongBookDialog')
1995- SongBookDialog.resize(387, 531)
1996- self.DialogLayout = QtGui.QVBoxLayout(SongBookDialog)
1997- self.DialogLayout.setSpacing(8)
1998- self.DialogLayout.setMargin(8)
1999- self.DialogLayout.setObjectName(u'DialogLayout')
2000- self.BookSongListWidget = QtGui.QListWidget()
2001- self.BookSongListWidget.setAlternatingRowColors(True)
2002- self.DialogLayout.addWidget(self.BookSongListWidget)
2003- self.DialogLayout.addWidget(self.BookSongListWidget)
2004- self.SongBookGroup = QtGui.QGroupBox(SongBookDialog)
2005- self.SongBookGroup.setMinimumSize(QtCore.QSize(0, 200))
2006- self.SongBookGroup.setObjectName(u'SongBookGroup')
2007- self.SongBookLayout = QtGui.QVBoxLayout(self.SongBookGroup)
2008+ SongBookDialog.resize(367, 120)
2009+ self.SongBookLayout = QtGui.QFormLayout(SongBookDialog)
2010+ self.SongBookLayout.setMargin(8)
2011 self.SongBookLayout.setSpacing(8)
2012- self.SongBookLayout.setMargin(8)
2013 self.SongBookLayout.setObjectName(u'SongBookLayout')
2014- self.DetailsWidget = QtGui.QWidget(self.SongBookGroup)
2015- self.DetailsWidget.setMinimumSize(QtCore.QSize(0, 0))
2016- self.DetailsWidget.setObjectName(u'DetailsWidget')
2017- self.DetailsLayout = QtGui.QFormLayout(self.DetailsWidget)
2018- self.DetailsLayout.setMargin(0)
2019- self.DetailsLayout.setSpacing(8)
2020- self.DetailsLayout.setObjectName(u'DetailsLayout')
2021- self.NameLabel = QtGui.QLabel(self.DetailsWidget)
2022+ self.NameLabel = QtGui.QLabel(SongBookDialog)
2023 self.NameLabel.setObjectName(u'NameLabel')
2024- self.DetailsLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.NameLabel)
2025- self.NameEdit = QtGui.QLineEdit(self.DetailsWidget)
2026+ self.SongBookLayout.setWidget(0,
2027+ QtGui.QFormLayout.LabelRole, self.NameLabel)
2028+ self.NameEdit = QtGui.QLineEdit(SongBookDialog)
2029 self.NameEdit.setObjectName(u'NameEdit')
2030- self.DetailsLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.NameEdit)
2031- self.PublisherLabel = QtGui.QLabel(self.DetailsWidget)
2032+ self.SongBookLayout.setWidget(0,
2033+ QtGui.QFormLayout.FieldRole, self.NameEdit)
2034+ self.PublisherLabel = QtGui.QLabel(SongBookDialog)
2035 self.PublisherLabel.setObjectName(u'PublisherLabel')
2036- self.DetailsLayout.setWidget(1, QtGui.QFormLayout.LabelRole, self.PublisherLabel)
2037- self.PublisherEdit = QtGui.QLineEdit(self.DetailsWidget)
2038+ self.SongBookLayout.setWidget(1,
2039+ QtGui.QFormLayout.LabelRole, self.PublisherLabel)
2040+ self.PublisherEdit = QtGui.QLineEdit(SongBookDialog)
2041 self.PublisherEdit.setObjectName(u'PublisherEdit')
2042- self.DetailsLayout.setWidget(1, QtGui.QFormLayout.FieldRole, self.PublisherEdit)
2043- self.SongBookLayout.addWidget(self.DetailsWidget)
2044- self.MessageLabel = QtGui.QLabel(self.SongBookGroup)
2045- self.MessageLabel.setObjectName(u'MessageLabel')
2046- self.SongBookLayout.addWidget(self.MessageLabel)
2047- self.ButtonWidget = QtGui.QWidget(self.SongBookGroup)
2048- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
2049- sizePolicy.setHorizontalStretch(0)
2050- sizePolicy.setVerticalStretch(0)
2051- sizePolicy.setHeightForWidth(self.ButtonWidget.sizePolicy().hasHeightForWidth())
2052- self.ButtonWidget.setSizePolicy(sizePolicy)
2053- self.ButtonWidget.setMinimumSize(QtCore.QSize(0, 0))
2054- self.ButtonWidget.setObjectName(u'ButtonWidget')
2055- self.ButtonLayout = QtGui.QHBoxLayout(self.ButtonWidget)
2056- self.ButtonLayout.setSpacing(8)
2057- self.ButtonLayout.setMargin(0)
2058- self.ButtonLayout.setObjectName(u'ButtonLayout')
2059- spacerItem = QtGui.QSpacerItem(61, 24, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
2060- self.ButtonLayout.addItem(spacerItem)
2061- self.ClearButton = QtGui.QPushButton(self.ButtonWidget)
2062- icon = QtGui.QIcon()
2063- icon.addPixmap(QtGui.QPixmap(u':/services/service_new.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
2064- self.ClearButton.setIcon(icon)
2065- self.ClearButton.setObjectName(u'ClearButton')
2066- self.ButtonLayout.addWidget(self.ClearButton)
2067- self.AddUpdateButton = QtGui.QPushButton(self.ButtonWidget)
2068- icon1 = QtGui.QIcon()
2069- icon1.addPixmap(QtGui.QPixmap(u':/services/service_save.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
2070- self.AddUpdateButton.setIcon(icon1)
2071- self.AddUpdateButton.setObjectName(u'AddUpdateButton')
2072- self.ButtonLayout.addWidget(self.AddUpdateButton)
2073- self.DeleteButton = QtGui.QPushButton(self.ButtonWidget)
2074- icon2 = QtGui.QIcon()
2075- icon2.addPixmap(QtGui.QPixmap(u':/services/service_delete.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
2076- self.DeleteButton.setIcon(icon2)
2077- self.DeleteButton.setObjectName(u'DeleteButton')
2078- self.ButtonLayout.addWidget(self.DeleteButton)
2079- self.SongBookLayout.addWidget(self.ButtonWidget)
2080- self.DialogLayout.addWidget(self.SongBookGroup)
2081+ self.SongBookLayout.setWidget(1,
2082+ QtGui.QFormLayout.FieldRole, self.PublisherEdit)
2083 self.ButtonBox = QtGui.QDialogButtonBox(SongBookDialog)
2084 self.ButtonBox.setOrientation(QtCore.Qt.Horizontal)
2085- self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok)
2086+ self.ButtonBox.setStandardButtons(
2087+ QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel)
2088 self.ButtonBox.setObjectName(u'ButtonBox')
2089- self.DialogLayout.addWidget(self.ButtonBox)
2090+ self.SongBookLayout.setWidget(2,
2091+ QtGui.QFormLayout.FieldRole, self.ButtonBox)
2092+
2093 self.retranslateUi(SongBookDialog)
2094- QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), SongBookDialog.accept)
2095- QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), SongBookDialog.reject)
2096+ QtCore.QObject.connect(self.ButtonBox,
2097+ QtCore.SIGNAL(u'accepted()'), SongBookDialog.accept)
2098+ QtCore.QObject.connect(self.ButtonBox,
2099+ QtCore.SIGNAL(u'rejected()'), SongBookDialog.reject)
2100 QtCore.QMetaObject.connectSlotsByName(SongBookDialog)
2101
2102 def retranslateUi(self, SongBookDialog):
2103- SongBookDialog.setWindowTitle(translate(u'SongBookDialog', u'Book Song Maintenance'))
2104- self.SongBookGroup.setTitle(translate(u'SongBookDialog', u'Song Book'))
2105- self.NameLabel.setText(translate(u'SongBookDialog', u'Name:'))
2106- self.PublisherLabel.setText(translate(u'SongBookDialog', u'Publisher:'))
2107- self.ClearButton.setToolTip(translate(u'SongBookDialog', u'Clear Selection'))
2108- self.ClearButton.setText(translate(u'SongBookDialog', u'Clear'))
2109- self.AddUpdateButton.setToolTip(translate(u'SongBookDialog', u'Add Update Author'))
2110- self.AddUpdateButton.setText(translate(u'SongBookDialog', u'Save'))
2111- self.DeleteButton.setToolTip(translate(u'SongBookDialog', u'Delete Author'))
2112- self.DeleteButton.setText(translate(u'SongBookDialog', u'Delete'))
2113+ SongBookDialog.setWindowTitle(
2114+ translate(u'SongBookDialog', u'Edit Book'))
2115+ self.NameLabel.setText(
2116+ translate(u'SongBookDialog', u'Name:'))
2117+ self.PublisherLabel.setText(
2118+ translate(u'SongBookDialog', u'Publisher:'))
2119
2120=== modified file 'openlp/plugins/songs/forms/songbookform.py'
2121--- openlp/plugins/songs/forms/songbookform.py 2009-07-14 18:38:33 +0000
2122+++ openlp/plugins/songs/forms/songbookform.py 2009-07-24 20:40:34 +0000
2123@@ -20,107 +20,22 @@
2124 from PyQt4 import QtGui, QtCore
2125 from openlp.core.lib import translate
2126 from songbookdialog import Ui_SongBookDialog
2127-from openlp.plugins.songs.lib.classes import Book
2128
2129 class SongBookForm(QtGui.QDialog, Ui_SongBookDialog):
2130 """
2131 Class documentation goes here.
2132 """
2133- def __init__(self, songmanager, parent = None):
2134+ def __init__(self, parent=None):
2135 """
2136 Constructor
2137 """
2138 QtGui.QDialog.__init__(self, parent)
2139 self.setupUi(self)
2140- self.songmanager = songmanager
2141- self.currentRow = 0
2142- self.songbook = None
2143-
2144- QtCore.QObject.connect(self.DeleteButton,
2145- QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick)
2146- QtCore.QObject.connect(self.ClearButton,
2147- QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick)
2148- QtCore.QObject.connect(self.AddUpdateButton,
2149- QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick)
2150- QtCore.QObject.connect(self.NameEdit,
2151- QtCore.SIGNAL(u'lostFocus()'), self.onBookNameEditLostFocus)
2152- QtCore.QObject.connect(self.BookSongListWidget,
2153- QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onBooksListViewItemClicked)
2154-
2155- def load_form(self):
2156- """
2157- Refresh the screen and rest fields
2158- """
2159- self.BookSongListWidget.clear()
2160- self.onClearButtonClick() # tidy up screen
2161- books = self.songmanager.get_books()
2162- for book in books:
2163- book_name = QtGui.QListWidgetItem(book.name)
2164- book_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(book.id))
2165- self.BookSongListWidget.addItem(book_name)
2166- if self.currentRow >= self.BookSongListWidget.count() :
2167- self.BookSongListWidget.setCurrentRow(self.BookSongListWidget.count() - 1)
2168- else:
2169- self.BookSongListWidget.setCurrentRow(self.currentRow)
2170-
2171- def onDeleteButtonClick(self):
2172- """
2173- Delete the Book is the Book is not attached to any songs
2174- """
2175- self.songmanager.delete_book(self.Book.id)
2176- self.load_form()
2177-
2178- def onBookNameEditLostFocus(self):
2179- self._validate_form()
2180-
2181- def onAddUpdateButtonClick(self):
2182- """
2183- Sent New or update details to the database
2184- """
2185- if self.Book == None:
2186- self.Book = Book()
2187- self.Book.name = unicode(self.NameEdit.displayText())
2188- self.Book.publisher = unicode(self.PublisherEdit.displayText())
2189- self.songmanager.save_book(self.Book)
2190- self.onClearButtonClick()
2191- self.load_form()
2192-
2193- def onClearButtonClick(self):
2194- """
2195- Tidy up screen if clear button pressed
2196- """
2197- self.NameEdit.setText(u'')
2198- self.PublisherEdit.setText(u'')
2199- self.MessageLabel.setText(u'')
2200- self.DeleteButton.setEnabled(False)
2201- self.AddUpdateButton.setEnabled(True)
2202- self.Book = None
2203- self._validate_form()
2204- self.NameEdit.setFocus()
2205-
2206- def onBooksListViewItemClicked(self, index):
2207- """
2208- An Book has been selected display it
2209- If the Book is attached to a Song prevent delete
2210- """
2211- self.currentRow = self.BookSongListWidget.currentRow()
2212- item = self.BookSongListWidget.currentItem()
2213- item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
2214- self.Book = self.songmanager.get_book(item_id)
2215- self.NameEdit.setText(self.Book.name)
2216- self.PublisherEdit.setText(self.Book.publisher)
2217- if len(self.Book.songs) > 0:
2218- self.MessageLabel.setText(translate(u'BookForm', u'Book in use "Delete" is disabled'))
2219- self.DeleteButton.setEnabled(False)
2220- else:
2221- self.MessageLabel.setText(translate(u'BookForm', u'Book in not used'))
2222- self.DeleteButton.setEnabled(True)
2223- self._validate_form()
2224- self.NameEdit.setFocus()
2225-
2226- def _validate_form(self):
2227- # We need at lease a display name
2228- if len(self.NameEdit.displayText()) == 0:
2229- self.AddUpdateButton.setEnabled(False)
2230- else:
2231- self.AddUpdateButton.setEnabled(True)
2232+
2233+ def exec_(self, clear=True):
2234+ if clear:
2235+ self.NameEdit.clear()
2236+ self.PublisherEdit.clear()
2237+ self.NameEdit.setFocus()
2238+ return QtGui.QDialog.exec_(self)
2239+
2240
2241=== added file 'openlp/plugins/songs/forms/songmaintenancedialog.py'
2242--- openlp/plugins/songs/forms/songmaintenancedialog.py 1970-01-01 00:00:00 +0000
2243+++ openlp/plugins/songs/forms/songmaintenancedialog.py 2009-07-24 22:13:40 +0000
2244@@ -0,0 +1,254 @@
2245+# -*- coding: utf-8 -*-
2246+# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
2247+"""
2248+OpenLP - Open Source Lyrics Projection
2249+Copyright (c) 2008 Raoul Snyman
2250+Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
2251+
2252+This program is free software; you can redistribute it and/or modify it under
2253+the terms of the GNU General Public License as published by the Free Software
2254+Foundation; version 2 of the License.
2255+
2256+This program is distributed in the hope that it will be useful, but WITHOUT ANY
2257+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
2258+PARTICULAR PURPOSE. See the GNU General Public License for more details.
2259+
2260+You should have received a copy of the GNU General Public License along with
2261+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
2262+Place, Suite 330, Boston, MA 02111-1307 USA
2263+"""
2264+from PyQt4 import QtCore, QtGui
2265+from openlp.core.lib import translate
2266+
2267+class Ui_SongMaintenanceDialog(object):
2268+ def setupUi(self, SongMaintenanceDialog):
2269+ SongMaintenanceDialog.setObjectName(u'SongMaintenanceDialog')
2270+ SongMaintenanceDialog.setWindowModality(QtCore.Qt.ApplicationModal)
2271+ SongMaintenanceDialog.resize(486, 361)
2272+ self.DialogLayout = QtGui.QVBoxLayout(SongMaintenanceDialog)
2273+ self.DialogLayout.setSpacing(8)
2274+ self.DialogLayout.setMargin(8)
2275+ self.DialogLayout.setObjectName(u'DialogLayout')
2276+ self.ContentWidget = QtGui.QWidget(SongMaintenanceDialog)
2277+ self.ContentWidget.setObjectName(u'ContentWidget')
2278+ self.ContentLayout = QtGui.QHBoxLayout(self.ContentWidget)
2279+ self.ContentLayout.setSpacing(8)
2280+ self.ContentLayout.setMargin(0)
2281+ self.ContentLayout.setObjectName(u'ContentLayout')
2282+ self.TypeListWidget = QtGui.QListWidget(self.ContentWidget)
2283+ sizePolicy = QtGui.QSizePolicy(
2284+ QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Expanding)
2285+ sizePolicy.setHorizontalStretch(0)
2286+ sizePolicy.setVerticalStretch(0)
2287+ sizePolicy.setHeightForWidth(
2288+ self.TypeListWidget.sizePolicy().hasHeightForWidth())
2289+ self.TypeListWidget.setSizePolicy(sizePolicy)
2290+ self.TypeListWidget.setViewMode(QtGui.QListView.IconMode)
2291+ self.TypeListWidget.setIconSize(QtCore.QSize(112, 100));
2292+ self.TypeListWidget.setMovement(QtGui.QListView.Static);
2293+ self.TypeListWidget.setMaximumWidth(118);
2294+ self.TypeListWidget.setSpacing(3);
2295+ self.TypeListWidget.setSortingEnabled(False)
2296+ self.TypeListWidget.setUniformItemSizes(True)
2297+ self.TypeListWidget.setObjectName(u'TypeListWidget')
2298+ icon = QtGui.QIcon()
2299+ icon.addPixmap(QtGui.QPixmap(u':/songs/author_maintenance.png'),
2300+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2301+ item = QtGui.QListWidgetItem(self.TypeListWidget)
2302+ item.setIcon(icon)
2303+ icon1 = QtGui.QIcon()
2304+ icon1.addPixmap(QtGui.QPixmap(u':/songs/topic_maintenance.png'),
2305+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2306+ item = QtGui.QListWidgetItem(self.TypeListWidget)
2307+ item.setIcon(icon1)
2308+ icon2 = QtGui.QIcon()
2309+ icon2.addPixmap(QtGui.QPixmap(u':/songs/book_maintenance.png'),
2310+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2311+ item = QtGui.QListWidgetItem(self.TypeListWidget)
2312+ item.setIcon(icon2)
2313+ self.ContentLayout.addWidget(self.TypeListWidget)
2314+ self.TypeStackedWidget = QtGui.QStackedWidget(self.ContentWidget)
2315+ self.TypeStackedWidget.setObjectName(u'TypeStackedWidget')
2316+ self.AuthorsPage = QtGui.QWidget()
2317+ self.AuthorsPage.setObjectName(u'AuthorsPage')
2318+ self.AuthorsLayout = QtGui.QVBoxLayout(self.AuthorsPage)
2319+ self.AuthorsLayout.setSpacing(4)
2320+ self.AuthorsLayout.setMargin(0)
2321+ self.AuthorsLayout.setObjectName(u'AuthorsLayout')
2322+ self.AuthorsListWidget = QtGui.QListWidget(self.AuthorsPage)
2323+ self.AuthorsListWidget.setObjectName(u'AuthorsListWidget')
2324+ self.AuthorsLayout.addWidget(self.AuthorsListWidget)
2325+ self.AuthorButtonWidget = QtGui.QWidget(self.AuthorsPage)
2326+ self.AuthorButtonWidget.setObjectName(u'AuthorButtonWidget')
2327+ self.AuthorButtonsLayout = QtGui.QHBoxLayout(self.AuthorButtonWidget)
2328+ self.AuthorButtonsLayout.setSpacing(8)
2329+ self.AuthorButtonsLayout.setMargin(0)
2330+ self.AuthorButtonsLayout.setObjectName(u'AuthorButtonsLayout')
2331+ spacerItem = QtGui.QSpacerItem(40, 20,
2332+ QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
2333+ self.AuthorButtonsLayout.addItem(spacerItem)
2334+ self.AuthorAddButton = QtGui.QPushButton(self.AuthorButtonWidget)
2335+ icon3 = QtGui.QIcon()
2336+ icon3.addPixmap(QtGui.QPixmap(u':/songs/author_add.png'),
2337+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2338+ self.AuthorAddButton.setIcon(icon3)
2339+ self.AuthorAddButton.setObjectName(u'AuthorAddButton')
2340+ self.AuthorButtonsLayout.addWidget(self.AuthorAddButton)
2341+ self.AuthorEditButton = QtGui.QPushButton(self.AuthorButtonWidget)
2342+ icon4 = QtGui.QIcon()
2343+ icon4.addPixmap(QtGui.QPixmap(u':/songs/author_edit.png'),
2344+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2345+ self.AuthorEditButton.setIcon(icon4)
2346+ self.AuthorEditButton.setObjectName(u'AuthorEditButton')
2347+ self.AuthorButtonsLayout.addWidget(self.AuthorEditButton)
2348+ self.AuthorDeleteButton = QtGui.QPushButton(self.AuthorButtonWidget)
2349+ icon5 = QtGui.QIcon()
2350+ icon5.addPixmap(QtGui.QPixmap(u':/songs/author_delete.png'),
2351+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2352+ self.AuthorDeleteButton.setIcon(icon5)
2353+ self.AuthorDeleteButton.setObjectName(u'AuthorDeleteButton')
2354+ self.AuthorButtonsLayout.addWidget(self.AuthorDeleteButton)
2355+ self.AuthorsLayout.addWidget(self.AuthorButtonWidget)
2356+ self.AuthorsLine = QtGui.QFrame(self.AuthorsPage)
2357+ self.AuthorsLine.setFrameShape(QtGui.QFrame.HLine)
2358+ self.AuthorsLine.setFrameShadow(QtGui.QFrame.Sunken)
2359+ self.AuthorsLine.setObjectName(u'AuthorsLine')
2360+ self.AuthorsLayout.addWidget(self.AuthorsLine)
2361+ self.TypeStackedWidget.addWidget(self.AuthorsPage)
2362+ self.TopicsPage = QtGui.QWidget()
2363+ self.TopicsPage.setObjectName(u'TopicsPage')
2364+ self.TopicLayout = QtGui.QVBoxLayout(self.TopicsPage)
2365+ self.TopicLayout.setSpacing(4)
2366+ self.TopicLayout.setMargin(0)
2367+ self.TopicLayout.setObjectName(u'TopicLayout')
2368+ self.TopicsListWidget = QtGui.QListWidget(self.TopicsPage)
2369+ self.TopicsListWidget.setObjectName(u'TopicsListWidget')
2370+ self.TopicLayout.addWidget(self.TopicsListWidget)
2371+ self.TopicButtonWidget = QtGui.QWidget(self.TopicsPage)
2372+ self.TopicButtonWidget.setObjectName(u'TopicButtonWidget')
2373+ self.TopicButtonLayout = QtGui.QHBoxLayout(self.TopicButtonWidget)
2374+ self.TopicButtonLayout.setSpacing(8)
2375+ self.TopicButtonLayout.setMargin(0)
2376+ self.TopicButtonLayout.setObjectName(u'TopicButtonLayout')
2377+ TopicSpacerItem = QtGui.QSpacerItem(54, 20,
2378+ QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
2379+ self.TopicButtonLayout.addItem(TopicSpacerItem)
2380+ self.TopicAddButton = QtGui.QPushButton(self.TopicButtonWidget)
2381+ icon6 = QtGui.QIcon()
2382+ icon6.addPixmap(QtGui.QPixmap(u':/songs/topic_add.png'),
2383+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2384+ self.TopicAddButton.setIcon(icon6)
2385+ self.TopicAddButton.setObjectName(u'TopicAddButton')
2386+ self.TopicButtonLayout.addWidget(self.TopicAddButton)
2387+ self.TopicEditButton = QtGui.QPushButton(self.TopicButtonWidget)
2388+ icon7 = QtGui.QIcon()
2389+ icon7.addPixmap(QtGui.QPixmap(u':/songs/topic_edit.png'),
2390+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2391+ self.TopicEditButton.setIcon(icon7)
2392+ self.TopicEditButton.setObjectName(u'TopicEditButton')
2393+ self.TopicButtonLayout.addWidget(self.TopicEditButton)
2394+ self.TopicDeleteButton = QtGui.QPushButton(self.TopicButtonWidget)
2395+ icon8 = QtGui.QIcon()
2396+ icon8.addPixmap(QtGui.QPixmap(u':/songs/topic_delete.png'),
2397+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2398+ self.TopicDeleteButton.setIcon(icon8)
2399+ self.TopicDeleteButton.setObjectName(u'TopicDeleteButton')
2400+ self.TopicButtonLayout.addWidget(self.TopicDeleteButton)
2401+ self.TopicLayout.addWidget(self.TopicButtonWidget)
2402+ self.TopicsLine = QtGui.QFrame(self.TopicsPage)
2403+ self.TopicsLine.setFrameShape(QtGui.QFrame.HLine)
2404+ self.TopicsLine.setFrameShadow(QtGui.QFrame.Sunken)
2405+ self.TopicsLine.setObjectName(u'TopicsLine')
2406+ self.TopicLayout.addWidget(self.TopicsLine)
2407+ self.TypeStackedWidget.addWidget(self.TopicsPage)
2408+ self.BooksPage = QtGui.QWidget()
2409+ self.BooksPage.setObjectName(u'BooksPage')
2410+ self.BookLayout = QtGui.QVBoxLayout(self.BooksPage)
2411+ self.BookLayout.setSpacing(4)
2412+ self.BookLayout.setMargin(0)
2413+ self.BookLayout.setObjectName(u'BookLayout')
2414+ self.BooksListWidget = QtGui.QListWidget(self.BooksPage)
2415+ self.BooksListWidget.setObjectName(u'BooksListWidget')
2416+ self.BookLayout.addWidget(self.BooksListWidget)
2417+ self.BookButtonWidget = QtGui.QWidget(self.BooksPage)
2418+ self.BookButtonWidget.setObjectName(u'BookButtonWidget')
2419+ self.BookButtonLayout = QtGui.QHBoxLayout(self.BookButtonWidget)
2420+ self.BookButtonLayout.setSpacing(8)
2421+ self.BookButtonLayout.setMargin(0)
2422+ self.BookButtonLayout.setObjectName(u'BookButtonLayout')
2423+ spacerItem2 = QtGui.QSpacerItem(54, 20,
2424+ QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
2425+ self.BookButtonLayout.addItem(spacerItem2)
2426+ self.BookAddButton = QtGui.QPushButton(self.BookButtonWidget)
2427+ icon9 = QtGui.QIcon()
2428+ icon9.addPixmap(QtGui.QPixmap(u':/songs/book_add.png'),
2429+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2430+ self.BookAddButton.setIcon(icon9)
2431+ self.BookAddButton.setObjectName(u'BookAddButton')
2432+ self.BookButtonLayout.addWidget(self.BookAddButton)
2433+ self.BookEditButton = QtGui.QPushButton(self.BookButtonWidget)
2434+ icon10 = QtGui.QIcon()
2435+ icon10.addPixmap(QtGui.QPixmap(u':/songs/book_edit.png'),
2436+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2437+ self.BookEditButton.setIcon(icon10)
2438+ self.BookEditButton.setObjectName(u'BookEditButton')
2439+ self.BookButtonLayout.addWidget(self.BookEditButton)
2440+ self.BookDeleteButton = QtGui.QPushButton(self.BookButtonWidget)
2441+ icon11 = QtGui.QIcon()
2442+ icon11.addPixmap(QtGui.QPixmap(u':/songs/book_delete.png'),
2443+ QtGui.QIcon.Normal, QtGui.QIcon.Off)
2444+ self.BookDeleteButton.setIcon(icon11)
2445+ self.BookDeleteButton.setObjectName(u'BookDeleteButton')
2446+ self.BookButtonLayout.addWidget(self.BookDeleteButton)
2447+ self.BookLayout.addWidget(self.BookButtonWidget)
2448+ self.BooksLine = QtGui.QFrame(self.BooksPage)
2449+ self.BooksLine.setFrameShape(QtGui.QFrame.HLine)
2450+ self.BooksLine.setFrameShadow(QtGui.QFrame.Sunken)
2451+ self.BooksLine.setObjectName(u'BooksLine')
2452+ self.BookLayout.addWidget(self.BooksLine)
2453+ self.TypeStackedWidget.addWidget(self.BooksPage)
2454+ self.ContentLayout.addWidget(self.TypeStackedWidget)
2455+ self.DialogLayout.addWidget(self.ContentWidget)
2456+ self.MaintenanceButtonBox = QtGui.QDialogButtonBox(SongMaintenanceDialog)
2457+ self.MaintenanceButtonBox.setOrientation(QtCore.Qt.Horizontal)
2458+ self.MaintenanceButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Close)
2459+ self.MaintenanceButtonBox.setObjectName(u'MaintenanceButtonBox')
2460+ self.DialogLayout.addWidget(self.MaintenanceButtonBox)
2461+
2462+ self.retranslateUi(SongMaintenanceDialog)
2463+ self.TypeStackedWidget.setCurrentIndex(0)
2464+ QtCore.QObject.connect(self.MaintenanceButtonBox,
2465+ QtCore.SIGNAL(u'rejected()'), SongMaintenanceDialog.accept)
2466+ QtCore.QObject.connect(self.TypeListWidget,
2467+ QtCore.SIGNAL(u'currentRowChanged(int)'),
2468+ self.TypeStackedWidget.setCurrentIndex)
2469+ QtCore.QMetaObject.connectSlotsByName(SongMaintenanceDialog)
2470+
2471+ def retranslateUi(self, SongMaintenanceDialog):
2472+ SongMaintenanceDialog.setWindowTitle(
2473+ translate(u'SongMaintenanceDialog', u'Song Maintenance'))
2474+ self.TypeListWidget.item(0).setText(
2475+ translate(u'SongMaintenanceDialog', u'Authors'))
2476+ self.TypeListWidget.item(1).setText(
2477+ translate(u'SongMaintenanceDialog', u'Topics'))
2478+ self.TypeListWidget.item(2).setText(
2479+ translate(u'SongMaintenanceDialog', u'Books/Hymnals'))
2480+ self.AuthorAddButton.setText(
2481+ translate(u'SongMaintenanceDialog', u'Add'))
2482+ self.AuthorEditButton.setText(
2483+ translate(u'SongMaintenanceDialog', u'Edit'))
2484+ self.AuthorDeleteButton.setText(
2485+ translate(u'SongMaintenanceDialog', u'Delete'))
2486+ self.TopicAddButton.setText(
2487+ translate(u'SongMaintenanceDialog', u'Add'))
2488+ self.TopicEditButton.setText(
2489+ translate(u'SongMaintenanceDialog', u'Edit'))
2490+ self.TopicDeleteButton.setText(
2491+ translate(u'SongMaintenanceDialog', u'Delete'))
2492+ self.BookAddButton.setText(
2493+ translate(u'SongMaintenanceDialog', u'Add'))
2494+ self.BookEditButton.setText(
2495+ translate(u'SongMaintenanceDialog', u'Edit'))
2496+ self.BookDeleteButton.setText(
2497+ translate(u'SongMaintenanceDialog', u'Delete'))
2498+
2499
2500=== added file 'openlp/plugins/songs/forms/songmaintenanceform.py'
2501--- openlp/plugins/songs/forms/songmaintenanceform.py 1970-01-01 00:00:00 +0000
2502+++ openlp/plugins/songs/forms/songmaintenanceform.py 2009-07-24 22:13:40 +0000
2503@@ -0,0 +1,244 @@
2504+# -*- coding: utf-8 -*-
2505+"""
2506+OpenLP - Open Source Lyrics Projection
2507+Copyright (c) 2008 Raoul Snyman
2508+Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten Tinggaard
2509+
2510+This program is free software; you can redistribute it and/or modify it under
2511+the terms of the GNU General Public License as published by the Free Software
2512+Foundation; version 2 of the License.
2513+
2514+This program is distributed in the hope that it will be useful, but WITHOUT ANY
2515+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
2516+PARTICULAR PURPOSE. See the GNU General Public License for more details.
2517+
2518+You should have received a copy of the GNU General Public License along with
2519+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
2520+Place, Suite 330, Boston, MA 02111-1307 USA
2521+"""
2522+
2523+from PyQt4 import QtGui, QtCore
2524+from openlp.core.lib import translate
2525+from openlp.plugins.songs.lib.classes import Author, Book, Topic
2526+from songmaintenancedialog import Ui_SongMaintenanceDialog
2527+from authorsform import AuthorsForm
2528+from topicsform import TopicsForm
2529+from songbookform import SongBookForm
2530+
2531+class SongMaintenanceForm(QtGui.QDialog, Ui_SongMaintenanceDialog):
2532+ """
2533+ Class documentation goes here.
2534+ """
2535+ def __init__(self, songmanager, parent=None):
2536+ """
2537+ Constructor
2538+ """
2539+ QtGui.QDialog.__init__(self, parent)
2540+ self.setupUi(self)
2541+ self.songmanager = songmanager
2542+ self.authorform = AuthorsForm(self)
2543+ self.topicform = TopicsForm(self)
2544+ self.bookform = SongBookForm(self)
2545+ QtCore.QObject.connect(self.AuthorAddButton,
2546+ QtCore.SIGNAL(u'pressed()'), self.onAuthorAddButtonClick)
2547+ QtCore.QObject.connect(self.TopicAddButton,
2548+ QtCore.SIGNAL(u'pressed()'), self.onTopicAddButtonClick)
2549+ QtCore.QObject.connect(self.BookAddButton,
2550+ QtCore.SIGNAL(u'pressed()'), self.onBookAddButtonClick)
2551+ QtCore.QObject.connect(self.AuthorEditButton,
2552+ QtCore.SIGNAL(u'pressed()'), self.onAuthorEditButtonClick)
2553+ QtCore.QObject.connect(self.TopicEditButton,
2554+ QtCore.SIGNAL(u'pressed()'), self.onTopicEditButtonClick)
2555+ QtCore.QObject.connect(self.BookEditButton,
2556+ QtCore.SIGNAL(u'pressed()'), self.onBookEditButtonClick)
2557+ QtCore.QObject.connect(self.AuthorDeleteButton,
2558+ QtCore.SIGNAL(u'pressed()'), self.onAuthorDeleteButtonClick)
2559+ QtCore.QObject.connect(self.TopicDeleteButton,
2560+ QtCore.SIGNAL(u'pressed()'), self.onTopicDeleteButtonClick)
2561+ QtCore.QObject.connect(self.BookDeleteButton,
2562+ QtCore.SIGNAL(u'pressed()'), self.onBookDeleteButtonClick)
2563+
2564+ def exec_(self):
2565+ self.TypeListWidget.setCurrentRow(0)
2566+ self.resetAuthors()
2567+ self.resetTopics()
2568+ self.resetBooks()
2569+ self.TypeListWidget.setFocus()
2570+ return QtGui.QDialog.exec_(self)
2571+
2572+ def _getCurrentItemId(self, ListWidget):
2573+ item = ListWidget.currentItem()
2574+ if item is not None:
2575+ item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
2576+ return item_id
2577+ else:
2578+ return -1
2579+
2580+ def _deleteItem(self, list_widget, get_func, del_func, reset_func,
2581+ dlg_title, del_text, err_text, sel_text):
2582+ item_id = self._getCurrentItemId(list_widget)
2583+ if item_id != -1:
2584+ item = get_func(item_id)
2585+ if QtGui.QMessageBox.warning(self, dlg_title, del_text,
2586+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)
2587+ ) == QtGui.QMessageBox.Yes:
2588+ if item is not None and len(item.songs) == 0:
2589+ del_func(item.id)
2590+ reset_func()
2591+ else:
2592+ QtGui.QMessageBox.critical(self, dlg_title, err_text,
2593+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2594+ else:
2595+ QtGui.QMessageBox.critical(self, dlg_title, sel_text,
2596+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2597+
2598+ def resetAuthors(self):
2599+ self.AuthorsListWidget.clear()
2600+ authors = self.songmanager.get_authors()
2601+ for author in authors:
2602+ if author.display_name is not None and author.display_name != u'':
2603+ author_name = QtGui.QListWidgetItem(author.display_name)
2604+ else:
2605+ author_name = QtGui.QListWidgetItem(
2606+ u'%s %s' % (author.first_name, author.last_name))
2607+ author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
2608+ self.AuthorsListWidget.addItem(author_name)
2609+
2610+ def resetTopics(self):
2611+ self.TopicsListWidget.clear()
2612+ topics = self.songmanager.get_topics()
2613+ for topic in topics:
2614+ topic_name = QtGui.QListWidgetItem(topic.name)
2615+ topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
2616+ self.TopicsListWidget.addItem(topic_name)
2617+
2618+ def resetBooks(self):
2619+ self.BooksListWidget.clear()
2620+ books = self.songmanager.get_books()
2621+ for book in books:
2622+ book_name = QtGui.QListWidgetItem(book.name)
2623+ book_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(book.id))
2624+ self.BooksListWidget.addItem(book_name)
2625+
2626+ def onAuthorAddButtonClick(self):
2627+ self.authorform.setAutoDisplayName(True)
2628+ if self.authorform.exec_():
2629+ author = Author.populate(
2630+ first_name=unicode(self.authorform.FirstNameEdit.text(), u'utf-8'),
2631+ last_name=unicode(self.authorform.LastNameEdit.text(), u'utf-8'),
2632+ display_name=unicode(self.authorform.DisplayEdit.text(), u'utf-8'))
2633+ if self.songmanager.save_author(author):
2634+ self.resetAuthors()
2635+ else:
2636+ QtGui.QMessageBox.critical(self,
2637+ translate(u'SongMaintenanceForm', u'Error'),
2638+ translate(u'SongMaintenanceForm', u'Couldn\'t add your author!'),
2639+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2640+
2641+ def onTopicAddButtonClick(self):
2642+ if self.topicform.exec_():
2643+ topic = Topic.populate(name=unicode(self.topicform.NameEdit.text(), u'utf-8'))
2644+ if self.songmanager.save_topic(topic):
2645+ self.resetTopics()
2646+ else:
2647+ QtGui.QMessageBox.critical(self,
2648+ translate(u'SongMaintenanceForm', u'Error'),
2649+ translate(u'SongMaintenanceForm', u'Couldn\'t add your topic!'),
2650+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2651+
2652+ def onBookAddButtonClick(self):
2653+ if self.bookform.exec_():
2654+ book = Book.populate(name=unicode(self.bookform.NameEdit.text(), u'utf-8'),
2655+ publisher=unicode(self.bookform.PublisherEdit.text(), u'utf-8'))
2656+ if self.songmanager.save_book(book):
2657+ self.resetBooks()
2658+ else:
2659+ QtGui.QMessageBox.critical(self,
2660+ translate(u'SongMaintenanceForm', u'Error'),
2661+ translate(u'SongMaintenanceForm', u'Couldn\'t add your book!'),
2662+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2663+
2664+ def onAuthorEditButtonClick(self):
2665+ author_id = self._getCurrentItemId(self.AuthorsListWidget)
2666+ if author_id != -1:
2667+ author = self.songmanager.get_author(author_id)
2668+ self.authorform.setAutoDisplayName(False)
2669+ self.authorform.FirstNameEdit.setText(author.first_name)
2670+ self.authorform.LastNameEdit.setText(author.last_name)
2671+ self.authorform.DisplayEdit.setText(author.display_name)
2672+ if self.authorform.exec_(False):
2673+ author.first_name = unicode(self.authorform.FirstNameEdit.text(), u'utf-8')
2674+ author.last_name = unicode(self.authorform.LastNameEdit.text(), u'utf-8')
2675+ author.display_name = unicode(self.authorform.DisplayEdit.text(), u'utf-8')
2676+ if self.songmanager.save_author(author):
2677+ self.resetAuthors()
2678+ else:
2679+ QtGui.QMessageBox.critical(self,
2680+ translate(u'SongMaintenanceForm', u'Error'),
2681+ translate(u'SongMaintenanceForm', u'Couldn\'t save your author!'),
2682+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2683+
2684+ def onTopicEditButtonClick(self):
2685+ topic_id = self._getCurrentItemId(self.TopicsListWidget)
2686+ if topic_id != -1:
2687+ topic = self.songmanager.get_topic(topic_id)
2688+ self.topicform.NameEdit.setText(topic.name)
2689+ if self.topicform.exec_(False):
2690+ topic.name = unicode(self.topicform.NameEdit.text(), u'utf-8')
2691+ if self.songmanager.save_topic(topic):
2692+ self.resetTopics()
2693+ else:
2694+ QtGui.QMessageBox.critical(self,
2695+ translate(u'SongMaintenanceForm', u'Error'),
2696+ translate(u'SongMaintenanceForm', u'Couldn\'t save your topic!'),
2697+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2698+
2699+ def onBookEditButtonClick(self):
2700+ book_id = self._getCurrentItemId(self.BooksListWidget)
2701+ if book_id != -1:
2702+ book = self.songmanager.get_book(book_id)
2703+ self.bookform.NameEdit.setText(book.name)
2704+ self.bookform.PublisherEdit.setText(book.publisher)
2705+ if self.bookform.exec_(False):
2706+ book.name = unicode(self.bookform.NameEdit.text(), u'utf-8')
2707+ book.publisher = unicode(self.bookform.PublisherEdit.text(), u'utf-8')
2708+ if self.songmanager.save_book(book):
2709+ self.resetBooks()
2710+ else:
2711+ QtGui.QMessageBox.critical(self,
2712+ translate(u'SongMaintenanceForm', u'Error'),
2713+ translate(u'SongMaintenanceForm', u'Couldn\'t save your book!'),
2714+ QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
2715+
2716+ def onAuthorDeleteButtonClick(self):
2717+ """
2718+ Delete the author if the author is not attached to any songs
2719+ """
2720+ self._deleteItem(self.AuthorsListWidget, self.songmanager.get_author,
2721+ self.songmanager.delete_author, self.resetAuthors,
2722+ translate(u'SongMaintenanceForm', u'Delete Author'),
2723+ translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected author?'),
2724+ translate(u'SongMaintenanceForm', u'This author can\'t be deleted, they are currently assigned to at least one song!'),
2725+ translate(u'SongMaintenanceForm', u'No author selected!'))
2726+
2727+ def onTopicDeleteButtonClick(self):
2728+ """
2729+ Delete the Book is the Book is not attached to any songs
2730+ """
2731+ self._deleteItem(self.TopicsListWidget, self.songmanager.get_topic,
2732+ self.songmanager.delete_topic, self.resetTopics,
2733+ translate(u'SongMaintenanceForm', u'Delete Topic'),
2734+ translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected topic?'),
2735+ translate(u'SongMaintenanceForm', u'This topic can\'t be deleted, it is currently assigned to at least one song!'),
2736+ translate(u'SongMaintenanceForm', u'No topic selected!'))
2737+
2738+ def onBookDeleteButtonClick(self):
2739+ """
2740+ Delete the Book is the Book is not attached to any songs
2741+ """
2742+ self._deleteItem(self.BooksListWidget, self.songmanager.get_book,
2743+ self.songmanager.delete_book, self.resetBooks,
2744+ translate(u'SongMaintenanceForm', u'Delete Book'),
2745+ translate(u'SongMaintenanceForm', u'Are you sure you want to delete the selected book?'),
2746+ translate(u'SongMaintenanceForm', u'This book can\'t be deleted, it is currently assigned to at least one song!'),
2747+ translate(u'SongMaintenanceForm', u'No book selected!'))
2748
2749=== modified file 'openlp/plugins/songs/forms/topicsdialog.py'
2750--- openlp/plugins/songs/forms/topicsdialog.py 2009-06-14 15:12:40 +0000
2751+++ openlp/plugins/songs/forms/topicsdialog.py 2009-07-24 22:13:40 +0000
2752@@ -23,66 +23,39 @@
2753 class Ui_TopicsDialog(object):
2754 def setupUi(self, TopicsDialog):
2755 TopicsDialog.setObjectName(u'TopicsDialog')
2756- TopicsDialog.resize(387, 463)
2757- self.gridLayout_2 = QtGui.QGridLayout(TopicsDialog)
2758- self.gridLayout_2.setObjectName(u'gridLayout_2')
2759- self.TopicGroupBox = QtGui.QGroupBox(TopicsDialog)
2760- self.TopicGroupBox.setObjectName(u'TopicGroupBox')
2761- self.gridLayout = QtGui.QGridLayout(self.TopicGroupBox)
2762- self.gridLayout.setObjectName(u'gridLayout')
2763- self.TopicNameLabel = QtGui.QLabel(self.TopicGroupBox)
2764- self.TopicNameLabel.setObjectName(u'TopicNameLabel')
2765- self.gridLayout.addWidget(self.TopicNameLabel, 0, 0, 1, 1)
2766- self.TopicNameEdit = QtGui.QLineEdit(self.TopicGroupBox)
2767- self.TopicNameEdit.setObjectName(u'TopicNameEdit')
2768- self.gridLayout.addWidget(self.TopicNameEdit, 0, 1, 1, 4)
2769- spacerItem = QtGui.QSpacerItem(198, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
2770- self.gridLayout.addItem(spacerItem, 1, 0, 1, 2)
2771- self.DeleteButton = QtGui.QPushButton(self.TopicGroupBox)
2772- icon = QtGui.QIcon()
2773- icon.addPixmap(QtGui.QPixmap(u':/services/service_delete.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
2774- self.DeleteButton.setIcon(icon)
2775- self.DeleteButton.setObjectName(u'DeleteButton')
2776- self.gridLayout.addWidget(self.DeleteButton, 1, 3, 1, 1)
2777- self.AddUpdateButton = QtGui.QPushButton(self.TopicGroupBox)
2778- icon1 = QtGui.QIcon()
2779- icon1.addPixmap(QtGui.QPixmap(u':/services/service_save.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
2780- self.AddUpdateButton.setIcon(icon1)
2781- self.AddUpdateButton.setObjectName(u'AddUpdateButton')
2782- self.gridLayout.addWidget(self.AddUpdateButton, 1, 4, 1, 1)
2783- self.ClearButton = QtGui.QPushButton(self.TopicGroupBox)
2784- icon2 = QtGui.QIcon()
2785- icon2.addPixmap(QtGui.QPixmap(u':/services/service_new.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
2786- self.ClearButton.setIcon(icon2)
2787- self.ClearButton.setObjectName(u'ClearButton')
2788- self.gridLayout.addWidget(self.ClearButton, 1, 2, 1, 1)
2789- self.gridLayout_2.addWidget(self.TopicGroupBox, 1, 0, 1, 1)
2790- self.MessageLabel = QtGui.QLabel(TopicsDialog)
2791- self.MessageLabel.setObjectName(u'MessageLabel')
2792- self.gridLayout_2.addWidget(self.MessageLabel, 3, 0, 1, 1)
2793- self.TopicsListWidget = QtGui.QListWidget()
2794- self.TopicsListWidget.setAlternatingRowColors(True)
2795- self.gridLayout_2.addWidget(self.TopicsListWidget, 0, 0, 1, 1)
2796- self.ButtonBox = QtGui.QDialogButtonBox(TopicsDialog)
2797- self.ButtonBox.setOrientation(QtCore.Qt.Horizontal)
2798- self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Ok)
2799- self.ButtonBox.setObjectName(u'ButtonBox')
2800- self.gridLayout_2.addWidget(self.ButtonBox, 2, 0, 1, 1)
2801+ TopicsDialog.resize(365, 77)
2802+ self.TopicLayout = QtGui.QFormLayout(TopicsDialog)
2803+ self.TopicLayout.setFieldGrowthPolicy(
2804+ QtGui.QFormLayout.ExpandingFieldsGrow)
2805+ self.TopicLayout.setMargin(8)
2806+ self.TopicLayout.setSpacing(8)
2807+ self.TopicLayout.setObjectName(u'TopicLayout')
2808+ self.NameLabel = QtGui.QLabel(TopicsDialog)
2809+ self.NameLabel.setObjectName(u'NameLabel')
2810+ self.TopicLayout.setWidget(0,
2811+ QtGui.QFormLayout.LabelRole, self.NameLabel)
2812+ self.NameEdit = QtGui.QLineEdit(TopicsDialog)
2813+ self.NameEdit.setObjectName(u'NameEdit')
2814+ self.TopicLayout.setWidget(0,
2815+ QtGui.QFormLayout.FieldRole, self.NameEdit)
2816+ self.TopicButtonBox = QtGui.QDialogButtonBox(TopicsDialog)
2817+ self.TopicButtonBox.setOrientation(QtCore.Qt.Horizontal)
2818+ self.TopicButtonBox.setStandardButtons(
2819+ QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel)
2820+ self.TopicButtonBox.setObjectName(u'TopicButtonBox')
2821+ self.TopicLayout.setWidget(1,
2822+ QtGui.QFormLayout.FieldRole, self.TopicButtonBox)
2823
2824 self.retranslateUi(TopicsDialog)
2825- QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), TopicsDialog.accept)
2826- QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), TopicsDialog.reject)
2827+ QtCore.QObject.connect(self.TopicButtonBox,
2828+ QtCore.SIGNAL(u'accepted()'), TopicsDialog.accept)
2829+ QtCore.QObject.connect(self.TopicButtonBox,
2830+ QtCore.SIGNAL(u'rejected()'), TopicsDialog.reject)
2831 QtCore.QMetaObject.connectSlotsByName(TopicsDialog)
2832
2833 def retranslateUi(self, TopicsDialog):
2834- TopicsDialog.setWindowTitle(translate(u'TopicsDialog', u'Topic Maintenance'))
2835- self.TopicGroupBox.setTitle(translate(u'TopicsDialog', u'Topic'))
2836- self.TopicNameLabel.setText(translate(u'TopicsDialog', u'Topic Name:'))
2837-
2838- self.DeleteButton.setToolTip(translate(u'TopicsDialog', u'Delete Author'))
2839- self.DeleteButton.setText(translate(u'AuthorsDialog', u'Delete'))
2840- self.AddUpdateButton.setToolTip(translate(u'TopicsDialog', u'Add Update Author'))
2841- self.AddUpdateButton.setText(translate(u'AuthorsDialog', u'Save'))
2842- self.ClearButton.setToolTip(translate(u'TopicsDialog', u'Clear Selection'))
2843- self.ClearButton.setText(translate(u'TopicsDialog', u'Clear'))
2844+ TopicsDialog.setWindowTitle(
2845+ translate(u'TopicsDialog', u'Topic Maintenance'))
2846+ self.NameLabel.setText(
2847+ translate(u'TopicsDialog', u'Topic name:'))
2848
2849
2850=== modified file 'openlp/plugins/songs/forms/topicsform.py'
2851--- openlp/plugins/songs/forms/topicsform.py 2009-07-14 18:38:33 +0000
2852+++ openlp/plugins/songs/forms/topicsform.py 2009-07-24 20:40:34 +0000
2853@@ -18,110 +18,22 @@
2854 """
2855 from PyQt4 import QtGui, QtCore
2856 from openlp.core.lib import translate
2857-from openlp.plugins.songs.forms.topicsdialog import Ui_TopicsDialog
2858-from openlp.plugins.songs.lib.classes import Topic
2859+from topicsdialog import Ui_TopicsDialog
2860
2861 class TopicsForm(QtGui.QDialog, Ui_TopicsDialog):
2862 """
2863 Class documentation goes here.
2864 """
2865- def __init__(self, songmanager, parent = None):
2866+ def __init__(self, parent=None):
2867 """
2868 Constructor
2869 """
2870 QtGui.QDialog.__init__(self, parent)
2871 self.setupUi(self)
2872- self.songmanager = songmanager
2873- self.currentRow = 0
2874- self.topic = None
2875-
2876- QtCore.QObject.connect(self.DeleteButton,
2877- QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonClick)
2878- QtCore.QObject.connect(self.ClearButton,
2879- QtCore.SIGNAL(u'pressed()'), self.onClearButtonClick)
2880- QtCore.QObject.connect(self.AddUpdateButton,
2881- QtCore.SIGNAL(u'pressed()'), self.onAddUpdateButtonClick)
2882- QtCore.QObject.connect(self.TopicNameEdit,
2883- QtCore.SIGNAL(u'lostFocus()'), self.onTopicNameEditLostFocus)
2884- QtCore.QObject.connect(self.TopicsListWidget,
2885- QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onTopicsListWidgetItemClicked)
2886-
2887- def load_form(self):
2888- """
2889- Refresh the screen and rest fields
2890- """
2891- self.TopicsListWidget.clear()
2892- # tidy up screen
2893- self.onClearButtonClick()
2894- topics = self.songmanager.get_topics()
2895- for topic in topics:
2896- topic_name = QtGui.QListWidgetItem(topic.name)
2897- topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
2898- self.TopicsListWidget.addItem(topic_name)
2899- if self.currentRow >= self.TopicsListWidget.count() :
2900- self.TopicsListWidget.setCurrentRow(self.TopicsListWidget.count() - 1)
2901- else:
2902- self.TopicsListWidget.setCurrentRow(self.currentRow)
2903- self._validate_form()
2904-
2905- def onDeleteButtonClick(self):
2906- """
2907- Delete the Topic is the Topic is not attached to any songs
2908- """
2909- self.songmanager.delete_topic(self.topic.id)
2910- self.load_form()
2911-
2912- def onTopicNameEditLostFocus(self):
2913- self._validate_form()
2914-
2915- def onAddUpdateButtonClick(self):
2916- """
2917- Sent New or update details to the database
2918- """
2919- if self._validate_form():
2920- if self.topic == None:
2921- self.topic = Topic()
2922- self.topic.name = unicode(self.TopicNameEdit.displayText())
2923- self.songmanager.save_topic(self.topic)
2924- self.onClearButtonClick()
2925- self.load_form()
2926-
2927- def onClearButtonClick(self):
2928- """
2929- Tidy up screen if clear button pressed
2930- """
2931- self.TopicNameEdit.setText(u'')
2932- self.MessageLabel.setText(u'')
2933- self.DeleteButton.setEnabled(False)
2934- self.topic = None
2935- self._validate_form()
2936- self.TopicNameEdit.setFocus()
2937-
2938- def onTopicsListWidgetItemClicked(self, index):
2939- """
2940- An Topic has been selected display it
2941- If the Topic is attached to a Song prevent delete
2942- """
2943- self.currentRow = self.TopicsListWidget.currentRow()
2944- item = self.TopicsListWidget.currentItem()
2945- item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
2946- self.topic = self.songmanager.get_topic(item_id)
2947- self.TopicNameEdit.setText(self.topic.name)
2948- if len(self.topic.songs) > 0:
2949- self.MessageLabel.setText(translate(u'TopicForm', u'Topic in use "Delete" is disabled'))
2950- self.DeleteButton.setEnabled(False)
2951- else:
2952- self.MessageLabel.setText(translate(u'TopicForm', u'Topic in not used'))
2953- self.DeleteButton.setEnabled(True)
2954- self._validate_form()
2955- self.TopicNameEdit.setFocus()
2956-
2957- def _validate_form(self):
2958- # We need at lease a display name
2959- valid = True
2960- if len(self.TopicNameEdit.displayText()) == 0:
2961- valid = False
2962- self.TopicNameEdit.setStyleSheet(u'background-color: red; color: white')
2963- else:
2964- self.TopicNameEdit.setStyleSheet(u'')
2965- return valid
2966+
2967+ def exec_(self, clear=True):
2968+ if clear:
2969+ self.NameEdit.clear()
2970+ self.NameEdit.setFocus()
2971+ return QtGui.QDialog.exec_(self)
2972+
2973
2974=== modified file 'openlp/plugins/songs/lib/classes.py'
2975--- openlp/plugins/songs/lib/classes.py 2009-02-01 21:12:18 +0000
2976+++ openlp/plugins/songs/lib/classes.py 2009-07-24 20:40:34 +0000
2977@@ -43,7 +43,8 @@
2978 """
2979 Book model
2980 """
2981- pass
2982+ def __repr__(self):
2983+ return u'<Book id="%s" name="%s" publisher="%s" />' % (str(self.id), self.name, self.publisher)
2984
2985 class Song(BaseModel):
2986 """
2987
2988=== modified file 'openlp/plugins/songs/lib/manager.py'
2989--- openlp/plugins/songs/lib/manager.py 2009-07-18 07:30:26 +0000
2990+++ openlp/plugins/songs/lib/manager.py 2009-07-24 20:40:34 +0000
2991@@ -218,9 +218,9 @@
2992 self.session.add(book)
2993 self.session.commit()
2994 return True
2995- except:
2996+ except Exception, e:
2997 self.session.rollback()
2998- log.error(u'Errow thrown %s', sys.exc_info()[1])
2999+ log.error(u'Errow thrown %s', e.args[0])
3000 return False
3001
3002 def delete_book(self, bookid):
3003
3004=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
3005--- openlp/plugins/songs/lib/mediaitem.py 2009-07-18 05:43:50 +0000
3006+++ openlp/plugins/songs/lib/mediaitem.py 2009-07-24 22:13:40 +0000
3007@@ -20,9 +20,10 @@
3008 import logging
3009
3010 from PyQt4 import QtCore, QtGui
3011-from openlp.core.lib import MediaManagerItem, translate, ServiceItem, SongXMLParser , contextMenuAction, contextMenuSeparator
3012-
3013-from openlp.plugins.songs.forms import EditSongForm, AuthorsForm, TopicsForm, SongBookForm
3014+from openlp.core.lib import MediaManagerItem, translate, ServiceItem, \
3015+ SongXMLParser, contextMenuAction, contextMenuSeparator
3016+from openlp.plugins.songs.forms import EditSongForm, AuthorsForm, \
3017+ TopicsForm, SongBookForm, SongMaintenanceForm
3018
3019 class SongList(QtGui.QListWidget):
3020
3021@@ -59,9 +60,7 @@
3022 self.ConfigSection = u'song'
3023 MediaManagerItem.__init__(self, parent, icon, title)
3024 self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager)
3025- self.authors_form = AuthorsForm(self.parent.songmanager)
3026- self.topics_form = TopicsForm(self.parent.songmanager)
3027- self.song_book_form = SongBookForm(self.parent.songmanager)
3028+ self.song_maintenance_form = SongMaintenanceForm(self.parent.songmanager, self)
3029
3030 def setupUi(self):
3031 # Add a toolbar
3032@@ -94,18 +93,10 @@
3033 translate(u'SongMediaItem', u'Add the selected song(s) to the service'),
3034 ':/system/system_add.png', self.onSongAddClick, 'SongAddItem')
3035 self.addToolbarSeparator()
3036- ## Author Edit Button ##
3037- self.addToolbarButton(translate(u'SongMediaItem', u'Edit Authors'),
3038- translate(u'SongMediaItem', u'Maintain the list of Song Authors'),
3039- ':/songs/song_author_edit.png', self.onEditAuthorClick, 'SongAuthorEditItem')
3040- ## Author Edit Button ##
3041- self.addToolbarButton(translate(u'SongMediaItem', u'Edit Books'),
3042- translate(u'SongMediaItem', u'Maintain the list of Song Books'),
3043- ':/songs/song_book_edit.png', self.onEditBookClick, 'SongAuthorEditItem')
3044- ## Author Edit Button ##
3045- self.addToolbarButton(translate(u'SongMediaItem', u'Edit Topics'),
3046- translate(u'SongMediaItem', u'Maintain the list of Song Topics'),
3047- ':/songs/song_topic_edit.png', self.onEditTopicClick, 'SongAuthorEditItem')
3048+ ## Song Maintenance Button ##
3049+ self.addToolbarButton(translate(u'SongMediaItem', u'Song Maintenance'),
3050+ translate(u'SongMediaItem', u'Maintain the lists of authors, topics and books'),
3051+ ':/songs/song_maintenance.png', self.onSongMaintenanceClick, 'SongMaintenanceItem')
3052 ## Add the songlist widget ##
3053 # Create the tab widget
3054 self.SongWidget = QtGui.QWidget(self)
3055@@ -250,6 +241,9 @@
3056 self.song_book_form.load_form()
3057 self.song_book_form.exec_()
3058
3059+ def onSongMaintenanceClick(self):
3060+ self.song_maintenance_form.exec_()
3061+
3062 def onSongEditClick(self):
3063 item = self.ListView.currentItem()
3064 if item is not None:
3065
3066=== modified file 'openlp/plugins/songs/lib/models.py'
3067--- openlp/plugins/songs/lib/models.py 2009-02-01 21:12:18 +0000
3068+++ openlp/plugins/songs/lib/models.py 2009-07-24 20:40:34 +0000
3069@@ -27,8 +27,8 @@
3070 def init_models(url):
3071 engine = create_engine(url)
3072 metadata.bind = engine
3073- session = scoped_session(sessionmaker(autoflush=True, autocommit=False,
3074- bind=engine))
3075+ session = scoped_session(sessionmaker(autoflush=True,
3076+ autocommit=False, bind=engine))
3077 mapper(Author, authors_table)
3078 mapper(Book, song_books_table)
3079 mapper(Song, songs_table,
3080
3081=== modified file 'openlp/plugins/songs/lib/tables.py'
3082--- openlp/plugins/songs/lib/tables.py 2009-06-24 06:10:13 +0000
3083+++ openlp/plugins/songs/lib/tables.py 2009-07-24 20:40:34 +0000
3084@@ -31,7 +31,7 @@
3085
3086 # Definition of the "song_books" table
3087 song_books_table = Table(u'song_books', metadata,
3088- Column(u'id', types.Integer, primary_key=True),
3089+ Column(u'id', types.Integer, primary_key=True),
3090 Column(u'name', types.Unicode(128), nullable=False),
3091 Column(u'publisher', types.Unicode(128))
3092 )
3093
3094=== modified file 'resources/forms/authorsdialog.ui'
3095--- resources/forms/authorsdialog.ui 2009-03-09 18:47:37 +0000
3096+++ resources/forms/authorsdialog.ui 2009-07-24 20:40:34 +0000
3097@@ -1,229 +1,104 @@
3098-<ui version="4.0" >
3099+<?xml version="1.0" encoding="UTF-8"?>
3100+<ui version="4.0">
3101 <class>AuthorsDialog</class>
3102- <widget class="QDialog" name="AuthorsDialog" >
3103- <property name="geometry" >
3104+ <widget class="QDialog" name="AuthorsDialog">
3105+ <property name="geometry">
3106 <rect>
3107 <x>0</x>
3108 <y>0</y>
3109- <width>410</width>
3110- <height>505</height>
3111+ <width>393</width>
3112+ <height>147</height>
3113 </rect>
3114 </property>
3115- <property name="windowTitle" >
3116+ <property name="windowTitle">
3117 <string>Author Maintenance</string>
3118 </property>
3119- <layout class="QVBoxLayout" name="DialogLayout" >
3120- <property name="spacing" >
3121- <number>8</number>
3122- </property>
3123- <property name="margin" >
3124- <number>8</number>
3125- </property>
3126- <item>
3127- <widget class="QTableWidget" name="AuthorListView" >
3128- <property name="dragEnabled" >
3129- <bool>true</bool>
3130- </property>
3131- <property name="alternatingRowColors" >
3132- <bool>true</bool>
3133- </property>
3134- <property name="columnCount" >
3135- <number>0</number>
3136- </property>
3137- </widget>
3138- </item>
3139- <item>
3140- <widget class="QGroupBox" name="AuthorDetails" >
3141- <property name="minimumSize" >
3142- <size>
3143- <width>0</width>
3144- <height>0</height>
3145- </size>
3146- </property>
3147- <property name="title" >
3148- <string>Author Details</string>
3149- </property>
3150- <layout class="QVBoxLayout" name="AuthorLayout" >
3151- <property name="spacing" >
3152- <number>8</number>
3153- </property>
3154- <property name="margin" >
3155- <number>8</number>
3156- </property>
3157- <item>
3158- <widget class="QWidget" native="1" name="DetailsWidget" >
3159- <layout class="QFormLayout" name="DetailsLayout" >
3160- <property name="horizontalSpacing" >
3161- <number>8</number>
3162- </property>
3163- <property name="verticalSpacing" >
3164- <number>8</number>
3165- </property>
3166- <property name="margin" >
3167- <number>0</number>
3168- </property>
3169- <item row="0" column="0" >
3170- <widget class="QLabel" name="DisplayLabel" >
3171- <property name="text" >
3172- <string>Display Name:</string>
3173- </property>
3174- </widget>
3175- </item>
3176- <item row="0" column="1" >
3177- <widget class="QLineEdit" name="DisplayEdit" />
3178- </item>
3179- <item row="1" column="0" >
3180- <widget class="QLabel" name="FirstNameLabel" >
3181- <property name="text" >
3182- <string>First Name:</string>
3183- </property>
3184- </widget>
3185- </item>
3186- <item row="1" column="1" >
3187- <widget class="QLineEdit" name="FirstNameEdit" />
3188- </item>
3189- <item row="2" column="0" >
3190- <widget class="QLabel" name="LastNameLabel" >
3191- <property name="text" >
3192- <string>Last Name:</string>
3193- </property>
3194- </widget>
3195- </item>
3196- <item row="2" column="1" >
3197- <widget class="QLineEdit" name="LastNameEdit" />
3198- </item>
3199- </layout>
3200- </widget>
3201- </item>
3202- <item>
3203- <widget class="QLabel" name="MessageLabel" >
3204- <property name="text" >
3205- <string/>
3206- </property>
3207- </widget>
3208- </item>
3209- <item>
3210- <widget class="QWidget" native="1" name="ButtonWidget" >
3211- <property name="minimumSize" >
3212- <size>
3213- <width>0</width>
3214- <height>0</height>
3215- </size>
3216- </property>
3217- <layout class="QHBoxLayout" name="ButtonLayout" >
3218- <property name="spacing" >
3219- <number>8</number>
3220- </property>
3221- <property name="margin" >
3222- <number>0</number>
3223- </property>
3224- <item>
3225- <spacer name="ButtonSpacer" >
3226- <property name="orientation" >
3227- <enum>Qt::Horizontal</enum>
3228- </property>
3229- <property name="sizeHint" stdset="0" >
3230- <size>
3231- <width>198</width>
3232- <height>20</height>
3233- </size>
3234- </property>
3235- </spacer>
3236- </item>
3237- <item>
3238- <widget class="QPushButton" name="ClearButton" >
3239- <property name="toolTip" >
3240- <string>Clear Selection</string>
3241- </property>
3242- <property name="text" >
3243- <string>New</string>
3244- </property>
3245- <property name="icon" >
3246- <iconset resource="../images/openlp-2.qrc" >
3247- <normaloff>:/services/service_new.png</normaloff>:/services/service_new.png</iconset>
3248- </property>
3249- </widget>
3250- </item>
3251- <item>
3252- <widget class="QPushButton" name="AddUpdateButton" >
3253- <property name="toolTip" >
3254- <string>Add Update Author</string>
3255- </property>
3256- <property name="text" >
3257- <string>Save</string>
3258- </property>
3259- <property name="icon" >
3260- <iconset resource="../images/openlp-2.qrc" >
3261- <normaloff>:/services/service_save.png</normaloff>:/services/service_save.png</iconset>
3262- </property>
3263- </widget>
3264- </item>
3265- <item>
3266- <widget class="QPushButton" name="DeleteButton" >
3267- <property name="toolTip" >
3268- <string>Delete Author</string>
3269- </property>
3270- <property name="text" >
3271- <string>Delete</string>
3272- </property>
3273- <property name="icon" >
3274- <iconset resource="../images/openlp-2.qrc" >
3275- <normaloff>:/services/service_delete.png</normaloff>:/services/service_delete.png</iconset>
3276- </property>
3277- </widget>
3278- </item>
3279- </layout>
3280- </widget>
3281- </item>
3282- </layout>
3283- </widget>
3284- </item>
3285- <item>
3286- <widget class="QDialogButtonBox" name="buttonBox" >
3287- <property name="toolTip" >
3288+ <layout class="QFormLayout" name="AuthorsLayout">
3289+ <property name="horizontalSpacing">
3290+ <number>8</number>
3291+ </property>
3292+ <property name="verticalSpacing">
3293+ <number>8</number>
3294+ </property>
3295+ <property name="margin">
3296+ <number>8</number>
3297+ </property>
3298+ <item row="0" column="1">
3299+ <widget class="QLineEdit" name="FirstNameEdit"/>
3300+ </item>
3301+ <item row="2" column="1">
3302+ <widget class="QLineEdit" name="DisplayEdit"/>
3303+ </item>
3304+ <item row="2" column="0">
3305+ <widget class="QLabel" name="DisplayLabel">
3306+ <property name="text">
3307+ <string>Display Name:</string>
3308+ </property>
3309+ </widget>
3310+ </item>
3311+ <item row="0" column="0">
3312+ <widget class="QLabel" name="FirstNameLabel">
3313+ <property name="text">
3314+ <string>First Name:</string>
3315+ </property>
3316+ </widget>
3317+ </item>
3318+ <item row="3" column="1">
3319+ <widget class="QDialogButtonBox" name="AuthorButtonBox">
3320+ <property name="toolTip">
3321 <string>Exit Screen</string>
3322 </property>
3323- <property name="orientation" >
3324+ <property name="orientation">
3325 <enum>Qt::Horizontal</enum>
3326 </property>
3327- <property name="standardButtons" >
3328- <set>QDialogButtonBox::Ok</set>
3329+ <property name="standardButtons">
3330+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
3331+ </property>
3332+ </widget>
3333+ </item>
3334+ <item row="1" column="1">
3335+ <widget class="QLineEdit" name="LastNameEdit"/>
3336+ </item>
3337+ <item row="1" column="0">
3338+ <widget class="QLabel" name="LastNameLabel">
3339+ <property name="text">
3340+ <string>Last Name:</string>
3341 </property>
3342 </widget>
3343 </item>
3344 </layout>
3345 </widget>
3346 <resources>
3347- <include location="../images/openlp-2.qrc" />
3348+ <include location="../images/openlp-2.qrc"/>
3349 </resources>
3350 <connections>
3351 <connection>
3352- <sender>buttonBox</sender>
3353+ <sender>AuthorButtonBox</sender>
3354 <signal>accepted()</signal>
3355 <receiver>AuthorsDialog</receiver>
3356 <slot>accept()</slot>
3357 <hints>
3358- <hint type="sourcelabel" >
3359+ <hint type="sourcelabel">
3360 <x>248</x>
3361 <y>254</y>
3362 </hint>
3363- <hint type="destinationlabel" >
3364+ <hint type="destinationlabel">
3365 <x>157</x>
3366 <y>274</y>
3367 </hint>
3368 </hints>
3369 </connection>
3370 <connection>
3371- <sender>buttonBox</sender>
3372+ <sender>AuthorButtonBox</sender>
3373 <signal>rejected()</signal>
3374 <receiver>AuthorsDialog</receiver>
3375 <slot>reject()</slot>
3376 <hints>
3377- <hint type="sourcelabel" >
3378+ <hint type="sourcelabel">
3379 <x>316</x>
3380 <y>260</y>
3381 </hint>
3382- <hint type="destinationlabel" >
3383+ <hint type="destinationlabel">
3384 <x>286</x>
3385 <y>274</y>
3386 </hint>
3387
3388=== modified file 'resources/forms/songbookdialog.ui'
3389--- resources/forms/songbookdialog.ui 2009-03-09 18:47:37 +0000
3390+++ resources/forms/songbookdialog.ui 2009-07-24 20:40:34 +0000
3391@@ -1,195 +1,62 @@
3392-<ui version="4.0" >
3393+<?xml version="1.0" encoding="UTF-8"?>
3394+<ui version="4.0">
3395 <class>SongBookDialog</class>
3396- <widget class="QDialog" name="SongBookDialog" >
3397- <property name="geometry" >
3398+ <widget class="QDialog" name="SongBookDialog">
3399+ <property name="geometry">
3400 <rect>
3401 <x>0</x>
3402 <y>0</y>
3403- <width>387</width>
3404- <height>531</height>
3405+ <width>367</width>
3406+ <height>120</height>
3407 </rect>
3408 </property>
3409- <property name="windowTitle" >
3410+ <property name="windowTitle">
3411 <string>Book Song Maintenance</string>
3412 </property>
3413- <layout class="QVBoxLayout" name="DialogLayout" >
3414- <property name="spacing" >
3415- <number>8</number>
3416- </property>
3417- <property name="margin" >
3418- <number>8</number>
3419- </property>
3420- <item>
3421- <widget class="QTableWidget" name="BookSongListView" />
3422- </item>
3423- <item>
3424- <widget class="QGroupBox" name="SongBookGroup" >
3425- <property name="minimumSize" >
3426- <size>
3427- <width>0</width>
3428- <height>200</height>
3429- </size>
3430- </property>
3431- <property name="title" >
3432- <string>Song Book</string>
3433- </property>
3434- <layout class="QVBoxLayout" name="SongBookLayout" >
3435- <property name="spacing" >
3436- <number>8</number>
3437- </property>
3438- <property name="margin" >
3439- <number>8</number>
3440- </property>
3441- <item>
3442- <widget class="QWidget" native="1" name="DetailsWidget" >
3443- <property name="minimumSize" >
3444- <size>
3445- <width>0</width>
3446- <height>0</height>
3447- </size>
3448- </property>
3449- <layout class="QFormLayout" name="DetailsLayout" >
3450- <property name="horizontalSpacing" >
3451- <number>8</number>
3452- </property>
3453- <property name="verticalSpacing" >
3454- <number>8</number>
3455- </property>
3456- <property name="margin" >
3457- <number>0</number>
3458- </property>
3459- <item row="0" column="0" >
3460- <widget class="QLabel" name="NameLabel" >
3461- <property name="text" >
3462- <string>Name:</string>
3463- </property>
3464- </widget>
3465- </item>
3466- <item row="0" column="1" >
3467- <widget class="QLineEdit" name="NameEdit" />
3468- </item>
3469- <item row="1" column="0" >
3470- <widget class="QLabel" name="PublisherLabel" >
3471- <property name="text" >
3472- <string>Publisher:</string>
3473- </property>
3474- </widget>
3475- </item>
3476- <item row="1" column="1" >
3477- <widget class="QLineEdit" name="PublisherEdit" />
3478- </item>
3479- </layout>
3480- </widget>
3481- </item>
3482- <item>
3483- <widget class="QLabel" name="MessageLabel" >
3484- <property name="sizePolicy" >
3485- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
3486- <horstretch>0</horstretch>
3487- <verstretch>0</verstretch>
3488- </sizepolicy>
3489- </property>
3490- <property name="text" >
3491- <string/>
3492- </property>
3493- </widget>
3494- </item>
3495- <item>
3496- <widget class="QWidget" native="1" name="ButtonWidget" >
3497- <property name="sizePolicy" >
3498- <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
3499- <horstretch>0</horstretch>
3500- <verstretch>0</verstretch>
3501- </sizepolicy>
3502- </property>
3503- <property name="minimumSize" >
3504- <size>
3505- <width>0</width>
3506- <height>0</height>
3507- </size>
3508- </property>
3509- <layout class="QHBoxLayout" name="ButtonLayout" >
3510- <property name="spacing" >
3511- <number>8</number>
3512- </property>
3513- <property name="margin" >
3514- <number>0</number>
3515- </property>
3516- <item>
3517- <spacer name="horizontalSpacer" >
3518- <property name="orientation" >
3519- <enum>Qt::Horizontal</enum>
3520- </property>
3521- <property name="sizeHint" stdset="0" >
3522- <size>
3523- <width>61</width>
3524- <height>24</height>
3525- </size>
3526- </property>
3527- </spacer>
3528- </item>
3529- <item>
3530- <widget class="QPushButton" name="ClearButton" >
3531- <property name="toolTip" >
3532- <string>Clear Selection</string>
3533- </property>
3534- <property name="text" >
3535- <string>New</string>
3536- </property>
3537- <property name="icon" >
3538- <iconset resource="../images/openlp-2.qrc" >
3539- <normaloff>:/services/service_new.png</normaloff>:/services/service_new.png</iconset>
3540- </property>
3541- </widget>
3542- </item>
3543- <item>
3544- <widget class="QPushButton" name="AddUpdateButton" >
3545- <property name="toolTip" >
3546- <string>Add Update Author</string>
3547- </property>
3548- <property name="text" >
3549- <string>Save</string>
3550- </property>
3551- <property name="icon" >
3552- <iconset resource="../images/openlp-2.qrc" >
3553- <normaloff>:/services/service_save.png</normaloff>:/services/service_save.png</iconset>
3554- </property>
3555- </widget>
3556- </item>
3557- <item>
3558- <widget class="QPushButton" name="DeleteButton" >
3559- <property name="toolTip" >
3560- <string>Delete Author</string>
3561- </property>
3562- <property name="text" >
3563- <string>Delete</string>
3564- </property>
3565- <property name="icon" >
3566- <iconset resource="../images/openlp-2.qrc" >
3567- <normaloff>:/services/service_delete.png</normaloff>:/services/service_delete.png</iconset>
3568- </property>
3569- </widget>
3570- </item>
3571- </layout>
3572- </widget>
3573- </item>
3574- </layout>
3575- </widget>
3576- </item>
3577- <item>
3578- <widget class="QDialogButtonBox" name="ButtonBox" >
3579- <property name="orientation" >
3580+ <layout class="QFormLayout" name="SongBookLayout">
3581+ <property name="horizontalSpacing">
3582+ <number>8</number>
3583+ </property>
3584+ <property name="verticalSpacing">
3585+ <number>8</number>
3586+ </property>
3587+ <property name="margin">
3588+ <number>8</number>
3589+ </property>
3590+ <item row="0" column="0">
3591+ <widget class="QLabel" name="NameLabel">
3592+ <property name="text">
3593+ <string>Name:</string>
3594+ </property>
3595+ </widget>
3596+ </item>
3597+ <item row="0" column="1">
3598+ <widget class="QLineEdit" name="NameEdit"/>
3599+ </item>
3600+ <item row="1" column="0">
3601+ <widget class="QLabel" name="PublisherLabel">
3602+ <property name="text">
3603+ <string>Publisher:</string>
3604+ </property>
3605+ </widget>
3606+ </item>
3607+ <item row="1" column="1">
3608+ <widget class="QLineEdit" name="PublisherEdit"/>
3609+ </item>
3610+ <item row="2" column="1">
3611+ <widget class="QDialogButtonBox" name="ButtonBox">
3612+ <property name="orientation">
3613 <enum>Qt::Horizontal</enum>
3614 </property>
3615- <property name="standardButtons" >
3616- <set>QDialogButtonBox::Ok</set>
3617+ <property name="standardButtons">
3618+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
3619 </property>
3620 </widget>
3621 </item>
3622 </layout>
3623 </widget>
3624 <resources>
3625- <include location="../images/openlp-2.qrc" />
3626+ <include location="../images/openlp-2.qrc"/>
3627 </resources>
3628 <connections>
3629 <connection>
3630@@ -198,11 +65,11 @@
3631 <receiver>SongBookDialog</receiver>
3632 <slot>accept()</slot>
3633 <hints>
3634- <hint type="sourcelabel" >
3635+ <hint type="sourcelabel">
3636 <x>248</x>
3637 <y>254</y>
3638 </hint>
3639- <hint type="destinationlabel" >
3640+ <hint type="destinationlabel">
3641 <x>157</x>
3642 <y>274</y>
3643 </hint>
3644@@ -214,11 +81,11 @@
3645 <receiver>SongBookDialog</receiver>
3646 <slot>reject()</slot>
3647 <hints>
3648- <hint type="sourcelabel" >
3649+ <hint type="sourcelabel">
3650 <x>316</x>
3651 <y>260</y>
3652 </hint>
3653- <hint type="destinationlabel" >
3654+ <hint type="destinationlabel">
3655 <x>286</x>
3656 <y>274</y>
3657 </hint>
3658
3659=== added file 'resources/forms/songmaintenance.ui'
3660--- resources/forms/songmaintenance.ui 1970-01-01 00:00:00 +0000
3661+++ resources/forms/songmaintenance.ui 2009-07-24 22:13:40 +0000
3662@@ -0,0 +1,442 @@
3663+<?xml version="1.0" encoding="UTF-8"?>
3664+<ui version="4.0">
3665+ <class>SongMaintenanceDialog</class>
3666+ <widget class="QDialog" name="SongMaintenanceDialog">
3667+ <property name="windowModality">
3668+ <enum>Qt::ApplicationModal</enum>
3669+ </property>
3670+ <property name="geometry">
3671+ <rect>
3672+ <x>0</x>
3673+ <y>0</y>
3674+ <width>486</width>
3675+ <height>361</height>
3676+ </rect>
3677+ </property>
3678+ <property name="windowTitle">
3679+ <string>Song Maintenance</string>
3680+ </property>
3681+ <layout class="QVBoxLayout" name="DialogLayout">
3682+ <property name="spacing">
3683+ <number>8</number>
3684+ </property>
3685+ <property name="margin">
3686+ <number>8</number>
3687+ </property>
3688+ <item>
3689+ <widget class="QWidget" name="ContentWidget" native="true">
3690+ <layout class="QHBoxLayout" name="ContentLayout">
3691+ <property name="spacing">
3692+ <number>8</number>
3693+ </property>
3694+ <property name="margin">
3695+ <number>0</number>
3696+ </property>
3697+ <item>
3698+ <widget class="QTableWidget" name="TypeTableWidget">
3699+ <property name="sizePolicy">
3700+ <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
3701+ <horstretch>0</horstretch>
3702+ <verstretch>0</verstretch>
3703+ </sizepolicy>
3704+ </property>
3705+ <property name="minimumSize">
3706+ <size>
3707+ <width>130</width>
3708+ <height>0</height>
3709+ </size>
3710+ </property>
3711+ <property name="maximumSize">
3712+ <size>
3713+ <width>130</width>
3714+ <height>16777215</height>
3715+ </size>
3716+ </property>
3717+ <property name="showDropIndicator" stdset="0">
3718+ <bool>false</bool>
3719+ </property>
3720+ <property name="dragDropOverwriteMode">
3721+ <bool>false</bool>
3722+ </property>
3723+ <property name="selectionMode">
3724+ <enum>QAbstractItemView::SingleSelection</enum>
3725+ </property>
3726+ <property name="iconSize">
3727+ <size>
3728+ <width>32</width>
3729+ <height>32</height>
3730+ </size>
3731+ </property>
3732+ <property name="showGrid">
3733+ <bool>false</bool>
3734+ </property>
3735+ <property name="cornerButtonEnabled">
3736+ <bool>false</bool>
3737+ </property>
3738+ <attribute name="horizontalHeaderVisible">
3739+ <bool>false</bool>
3740+ </attribute>
3741+ <attribute name="horizontalHeaderStretchLastSection">
3742+ <bool>true</bool>
3743+ </attribute>
3744+ <attribute name="verticalHeaderVisible">
3745+ <bool>false</bool>
3746+ </attribute>
3747+ <attribute name="verticalHeaderStretchLastSection">
3748+ <bool>false</bool>
3749+ </attribute>
3750+ <row>
3751+ <property name="text">
3752+ <string>New Row</string>
3753+ </property>
3754+ </row>
3755+ <row>
3756+ <property name="text">
3757+ <string>New Row</string>
3758+ </property>
3759+ </row>
3760+ <row>
3761+ <property name="text">
3762+ <string>New Row</string>
3763+ </property>
3764+ </row>
3765+ <column>
3766+ <property name="text">
3767+ <string>Types</string>
3768+ </property>
3769+ </column>
3770+ <item row="0" column="0">
3771+ <property name="text">
3772+ <string>
3773+Authors</string>
3774+ </property>
3775+ <property name="textAlignment">
3776+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
3777+ </property>
3778+ <property name="icon">
3779+ <iconset resource="../images/openlp-2.qrc">
3780+ <normaloff>:/songs/author_maintenance.png</normaloff>:/songs/author_maintenance.png</iconset>
3781+ </property>
3782+ </item>
3783+ <item row="1" column="0">
3784+ <property name="text">
3785+ <string>
3786+Topics</string>
3787+ </property>
3788+ <property name="textAlignment">
3789+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
3790+ </property>
3791+ <property name="icon">
3792+ <iconset resource="../images/openlp-2.qrc">
3793+ <normaloff>:/songs/topic_maintenance.png</normaloff>:/songs/topic_maintenance.png</iconset>
3794+ </property>
3795+ </item>
3796+ <item row="2" column="0">
3797+ <property name="text">
3798+ <string>
3799+Books/Hymnals</string>
3800+ </property>
3801+ <property name="textAlignment">
3802+ <set>AlignHCenter|AlignVCenter|AlignCenter</set>
3803+ </property>
3804+ <property name="icon">
3805+ <iconset resource="../images/openlp-2.qrc">
3806+ <normaloff>:/songs/book_maintenance.png</normaloff>:/songs/book_maintenance.png</iconset>
3807+ </property>
3808+ </item>
3809+ </widget>
3810+ </item>
3811+ <item>
3812+ <widget class="QStackedWidget" name="TypeStackedWidget">
3813+ <property name="currentIndex">
3814+ <number>2</number>
3815+ </property>
3816+ <widget class="QWidget" name="AuthorsPage">
3817+ <layout class="QVBoxLayout" name="AuthorsLayout">
3818+ <property name="spacing">
3819+ <number>8</number>
3820+ </property>
3821+ <property name="margin">
3822+ <number>0</number>
3823+ </property>
3824+ <item>
3825+ <widget class="QListWidget" name="AuthorsListWidget"/>
3826+ </item>
3827+ <item>
3828+ <widget class="QWidget" name="AuthorButtonWidget" native="true">
3829+ <layout class="QHBoxLayout" name="AuthorButtonsLayout">
3830+ <property name="spacing">
3831+ <number>8</number>
3832+ </property>
3833+ <property name="margin">
3834+ <number>0</number>
3835+ </property>
3836+ <item>
3837+ <spacer name="AuthorButtonSpacer">
3838+ <property name="orientation">
3839+ <enum>Qt::Horizontal</enum>
3840+ </property>
3841+ <property name="sizeHint" stdset="0">
3842+ <size>
3843+ <width>40</width>
3844+ <height>20</height>
3845+ </size>
3846+ </property>
3847+ </spacer>
3848+ </item>
3849+ <item>
3850+ <widget class="QPushButton" name="AuthorAddButton">
3851+ <property name="text">
3852+ <string>Add</string>
3853+ </property>
3854+ <property name="icon">
3855+ <iconset resource="../images/openlp-2.qrc">
3856+ <normaloff>:/songs/author_add.png</normaloff>:/songs/author_add.png</iconset>
3857+ </property>
3858+ </widget>
3859+ </item>
3860+ <item>
3861+ <widget class="QPushButton" name="AuthorEditButton">
3862+ <property name="text">
3863+ <string>Edit</string>
3864+ </property>
3865+ <property name="icon">
3866+ <iconset resource="../images/openlp-2.qrc">
3867+ <normaloff>:/songs/author_edit.png</normaloff>:/songs/author_edit.png</iconset>
3868+ </property>
3869+ </widget>
3870+ </item>
3871+ <item>
3872+ <widget class="QPushButton" name="AuthorDeleteButton">
3873+ <property name="text">
3874+ <string>Delete</string>
3875+ </property>
3876+ <property name="icon">
3877+ <iconset resource="../images/openlp-2.qrc">
3878+ <normaloff>:/songs/author_delete.png</normaloff>:/songs/author_delete.png</iconset>
3879+ </property>
3880+ </widget>
3881+ </item>
3882+ </layout>
3883+ </widget>
3884+ </item>
3885+ <item>
3886+ <widget class="Line" name="AuthorsLine">
3887+ <property name="orientation">
3888+ <enum>Qt::Horizontal</enum>
3889+ </property>
3890+ </widget>
3891+ </item>
3892+ </layout>
3893+ </widget>
3894+ <widget class="QWidget" name="TopicsPage">
3895+ <layout class="QVBoxLayout" name="TopicLayout">
3896+ <property name="spacing">
3897+ <number>8</number>
3898+ </property>
3899+ <property name="margin">
3900+ <number>0</number>
3901+ </property>
3902+ <item>
3903+ <widget class="QListWidget" name="TopicsListWidget"/>
3904+ </item>
3905+ <item>
3906+ <widget class="QWidget" name="TopicButtonWidget" native="true">
3907+ <layout class="QHBoxLayout" name="TopicButtonLayout">
3908+ <property name="spacing">
3909+ <number>8</number>
3910+ </property>
3911+ <property name="margin">
3912+ <number>0</number>
3913+ </property>
3914+ <item>
3915+ <spacer name="TopicButtonSpacer">
3916+ <property name="orientation">
3917+ <enum>Qt::Horizontal</enum>
3918+ </property>
3919+ <property name="sizeHint" stdset="0">
3920+ <size>
3921+ <width>54</width>
3922+ <height>20</height>
3923+ </size>
3924+ </property>
3925+ </spacer>
3926+ </item>
3927+ <item>
3928+ <widget class="QPushButton" name="TopicAddButton">
3929+ <property name="text">
3930+ <string>Add</string>
3931+ </property>
3932+ <property name="icon">
3933+ <iconset resource="../images/openlp-2.qrc">
3934+ <normaloff>:/songs/topic_add.png</normaloff>:/songs/topic_add.png</iconset>
3935+ </property>
3936+ </widget>
3937+ </item>
3938+ <item>
3939+ <widget class="QPushButton" name="TopicEditButton">
3940+ <property name="text">
3941+ <string>Edit</string>
3942+ </property>
3943+ <property name="icon">
3944+ <iconset resource="../images/openlp-2.qrc">
3945+ <normaloff>:/songs/topic_edit.png</normaloff>:/songs/topic_edit.png</iconset>
3946+ </property>
3947+ </widget>
3948+ </item>
3949+ <item>
3950+ <widget class="QPushButton" name="TopicDeleteButton">
3951+ <property name="text">
3952+ <string>Delete</string>
3953+ </property>
3954+ <property name="icon">
3955+ <iconset resource="../images/openlp-2.qrc">
3956+ <normaloff>:/songs/topic_delete.png</normaloff>:/songs/topic_delete.png</iconset>
3957+ </property>
3958+ </widget>
3959+ </item>
3960+ </layout>
3961+ </widget>
3962+ </item>
3963+ <item>
3964+ <widget class="Line" name="TopicsLine">
3965+ <property name="orientation">
3966+ <enum>Qt::Horizontal</enum>
3967+ </property>
3968+ </widget>
3969+ </item>
3970+ </layout>
3971+ </widget>
3972+ <widget class="QWidget" name="BooksPage">
3973+ <layout class="QVBoxLayout" name="BookLayout">
3974+ <property name="spacing">
3975+ <number>8</number>
3976+ </property>
3977+ <property name="margin">
3978+ <number>0</number>
3979+ </property>
3980+ <item>
3981+ <widget class="QListWidget" name="BooksListWidget"/>
3982+ </item>
3983+ <item>
3984+ <widget class="QWidget" name="BookButtonWidget" native="true">
3985+ <layout class="QHBoxLayout" name="BookButtonLayout">
3986+ <property name="spacing">
3987+ <number>8</number>
3988+ </property>
3989+ <property name="margin">
3990+ <number>0</number>
3991+ </property>
3992+ <item>
3993+ <spacer name="BookButtonSpacer">
3994+ <property name="orientation">
3995+ <enum>Qt::Horizontal</enum>
3996+ </property>
3997+ <property name="sizeHint" stdset="0">
3998+ <size>
3999+ <width>54</width>
4000+ <height>20</height>
4001+ </size>
4002+ </property>
4003+ </spacer>
4004+ </item>
4005+ <item>
4006+ <widget class="QPushButton" name="BookAddButton">
4007+ <property name="text">
4008+ <string>Add</string>
4009+ </property>
4010+ <property name="icon">
4011+ <iconset resource="../images/openlp-2.qrc">
4012+ <normaloff>:/songs/book_add.png</normaloff>:/songs/book_add.png</iconset>
4013+ </property>
4014+ </widget>
4015+ </item>
4016+ <item>
4017+ <widget class="QPushButton" name="BookEditButton">
4018+ <property name="text">
4019+ <string>Edit</string>
4020+ </property>
4021+ <property name="icon">
4022+ <iconset resource="../images/openlp-2.qrc">
4023+ <normaloff>:/songs/book_edit.png</normaloff>:/songs/book_edit.png</iconset>
4024+ </property>
4025+ </widget>
4026+ </item>
4027+ <item>
4028+ <widget class="QPushButton" name="BookDeleteButton">
4029+ <property name="text">
4030+ <string>Delete</string>
4031+ </property>
4032+ <property name="icon">
4033+ <iconset resource="../images/openlp-2.qrc">
4034+ <normaloff>:/songs/book_delete.png</normaloff>:/songs/book_delete.png</iconset>
4035+ </property>
4036+ </widget>
4037+ </item>
4038+ </layout>
4039+ </widget>
4040+ </item>
4041+ <item>
4042+ <widget class="Line" name="BooksLine">
4043+ <property name="orientation">
4044+ <enum>Qt::Horizontal</enum>
4045+ </property>
4046+ </widget>
4047+ </item>
4048+ </layout>
4049+ </widget>
4050+ </widget>
4051+ </item>
4052+ </layout>
4053+ </widget>
4054+ </item>
4055+ <item>
4056+ <widget class="QDialogButtonBox" name="MaintenanceButtonBox">
4057+ <property name="orientation">
4058+ <enum>Qt::Horizontal</enum>
4059+ </property>
4060+ <property name="standardButtons">
4061+ <set>QDialogButtonBox::Close</set>
4062+ </property>
4063+ </widget>
4064+ </item>
4065+ </layout>
4066+ </widget>
4067+ <resources>
4068+ <include location="../images/openlp-2.qrc"/>
4069+ </resources>
4070+ <connections>
4071+ <connection>
4072+ <sender>MaintenanceButtonBox</sender>
4073+ <signal>rejected()</signal>
4074+ <receiver>SongMaintenanceDialog</receiver>
4075+ <slot>accept()</slot>
4076+ <hints>
4077+ <hint type="sourcelabel">
4078+ <x>242</x>
4079+ <y>340</y>
4080+ </hint>
4081+ <hint type="destinationlabel">
4082+ <x>242</x>
4083+ <y>180</y>
4084+ </hint>
4085+ </hints>
4086+ </connection>
4087+ <connection>
4088+ <sender>TypeTableWidget</sender>
4089+ <signal>cellClicked(int,int)</signal>
4090+ <receiver>TypeStackedWidget</receiver>
4091+ <slot>setCurrentIndex(int)</slot>
4092+ <hints>
4093+ <hint type="sourcelabel">
4094+ <x>72</x>
4095+ <y>163</y>
4096+ </hint>
4097+ <hint type="destinationlabel">
4098+ <x>311</x>
4099+ <y>163</y>
4100+ </hint>
4101+ </hints>
4102+ </connection>
4103+ </connections>
4104+</ui>
4105
4106=== modified file 'resources/forms/topicsdialog.ui'
4107--- resources/forms/topicsdialog.ui 2009-03-10 16:46:25 +0000
4108+++ resources/forms/topicsdialog.ui 2009-07-24 20:40:34 +0000
4109@@ -1,158 +1,52 @@
4110-<ui version="4.0" >
4111+<?xml version="1.0" encoding="UTF-8"?>
4112+<ui version="4.0">
4113 <class>TopicsDialog</class>
4114- <widget class="QDialog" name="TopicsDialog" >
4115- <property name="geometry" >
4116+ <widget class="QDialog" name="TopicsDialog">
4117+ <property name="geometry">
4118 <rect>
4119 <x>0</x>
4120 <y>0</y>
4121- <width>471</width>
4122- <height>470</height>
4123+ <width>365</width>
4124+ <height>77</height>
4125 </rect>
4126 </property>
4127- <property name="windowTitle" >
4128+ <property name="windowTitle">
4129 <string>Topic Maintenance</string>
4130 </property>
4131- <layout class="QGridLayout" name="TopicsLayout" >
4132- <property name="margin" >
4133- <number>8</number>
4134- </property>
4135- <property name="spacing" >
4136- <number>8</number>
4137- </property>
4138- <item row="1" column="0" >
4139- <widget class="QGroupBox" name="TopicGroupBox" >
4140- <property name="title" >
4141- <string>Topic Details</string>
4142- </property>
4143- <layout class="QGridLayout" name="DetailsLayout" >
4144- <property name="margin" >
4145- <number>8</number>
4146- </property>
4147- <property name="spacing" >
4148- <number>8</number>
4149- </property>
4150- <item row="0" column="0" >
4151- <widget class="QLabel" name="TopicNameLabel" >
4152- <property name="text" >
4153- <string>Topic Name:</string>
4154- </property>
4155- </widget>
4156- </item>
4157- <item row="0" column="1" colspan="6" >
4158- <widget class="QLineEdit" name="TopicNameEdit" />
4159- </item>
4160- <item row="1" column="0" colspan="3" >
4161- <spacer name="ButtonsSpacer" >
4162- <property name="orientation" >
4163- <enum>Qt::Horizontal</enum>
4164- </property>
4165- <property name="sizeHint" stdset="0" >
4166- <size>
4167- <width>198</width>
4168- <height>20</height>
4169- </size>
4170- </property>
4171- </spacer>
4172- </item>
4173- <item row="1" column="5" >
4174- <widget class="QPushButton" name="DeleteButton" >
4175- <property name="toolTip" >
4176- <string>Delete Author</string>
4177- </property>
4178- <property name="text" >
4179- <string>Delete</string>
4180- </property>
4181- <property name="icon" >
4182- <iconset resource="../images/openlp-2.qrc" >
4183- <normaloff>:/services/service_delete.png</normaloff>:/services/service_delete.png</iconset>
4184- </property>
4185- </widget>
4186- </item>
4187- <item row="1" column="4" >
4188- <widget class="QPushButton" name="AddUpdateButton" >
4189- <property name="toolTip" >
4190- <string>Add Update Author</string>
4191- </property>
4192- <property name="text" >
4193- <string>Save</string>
4194- </property>
4195- <property name="icon" >
4196- <iconset resource="../images/openlp-2.qrc" >
4197- <normaloff>:/services/service_save.png</normaloff>:/services/service_save.png</iconset>
4198- </property>
4199- </widget>
4200- </item>
4201- <item row="1" column="3" >
4202- <widget class="QPushButton" name="ClearButton" >
4203- <property name="toolTip" >
4204- <string>Clear Selection</string>
4205- </property>
4206- <property name="text" >
4207- <string>New</string>
4208- </property>
4209- <property name="icon" >
4210- <iconset resource="../images/openlp-2.qrc" >
4211- <normaloff>:/services/service_new.png</normaloff>:/services/service_new.png</iconset>
4212- </property>
4213- </widget>
4214- </item>
4215- </layout>
4216- </widget>
4217- </item>
4218- <item row="0" column="0" >
4219- <widget class="QTableWidget" name="TopicsListView" >
4220- <property name="alternatingRowColors" >
4221- <bool>true</bool>
4222- </property>
4223- </widget>
4224- </item>
4225- <item row="2" column="0" >
4226- <widget class="QDialogButtonBox" name="ButtonBox" >
4227- <property name="orientation" >
4228- <enum>Qt::Horizontal</enum>
4229- </property>
4230- <property name="standardButtons" >
4231- <set>QDialogButtonBox::Ok</set>
4232+ <layout class="QFormLayout" name="TopicLayout">
4233+ <property name="fieldGrowthPolicy">
4234+ <enum>QFormLayout::ExpandingFieldsGrow</enum>
4235+ </property>
4236+ <property name="horizontalSpacing">
4237+ <number>8</number>
4238+ </property>
4239+ <property name="verticalSpacing">
4240+ <number>8</number>
4241+ </property>
4242+ <property name="margin">
4243+ <number>8</number>
4244+ </property>
4245+ <item row="0" column="0">
4246+ <widget class="QLabel" name="TopicNameLabel">
4247+ <property name="text">
4248+ <string>Topic Name:</string>
4249+ </property>
4250+ </widget>
4251+ </item>
4252+ <item row="0" column="1">
4253+ <widget class="QLineEdit" name="TopicNameEdit"/>
4254+ </item>
4255+ <item row="1" column="1">
4256+ <widget class="QDialogButtonBox" name="TopicButtonBox">
4257+ <property name="standardButtons">
4258+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
4259 </property>
4260 </widget>
4261 </item>
4262 </layout>
4263 </widget>
4264 <resources>
4265- <include location="../images/openlp-2.qrc" />
4266+ <include location="../images/openlp-2.qrc"/>
4267 </resources>
4268- <connections>
4269- <connection>
4270- <sender>ButtonBox</sender>
4271- <signal>accepted()</signal>
4272- <receiver>TopicsDialog</receiver>
4273- <slot>accept()</slot>
4274- <hints>
4275- <hint type="sourcelabel" >
4276- <x>248</x>
4277- <y>254</y>
4278- </hint>
4279- <hint type="destinationlabel" >
4280- <x>157</x>
4281- <y>274</y>
4282- </hint>
4283- </hints>
4284- </connection>
4285- <connection>
4286- <sender>ButtonBox</sender>
4287- <signal>rejected()</signal>
4288- <receiver>TopicsDialog</receiver>
4289- <slot>reject()</slot>
4290- <hints>
4291- <hint type="sourcelabel" >
4292- <x>316</x>
4293- <y>260</y>
4294- </hint>
4295- <hint type="destinationlabel" >
4296- <x>286</x>
4297- <y>274</y>
4298- </hint>
4299- </hints>
4300- </connection>
4301- </connections>
4302+ <connections/>
4303 </ui>
4304
4305=== added file 'resources/images/author_add.png'
4306Binary files resources/images/author_add.png 1970-01-01 00:00:00 +0000 and resources/images/author_add.png 2009-07-23 20:20:49 +0000 differ
4307=== added file 'resources/images/author_delete.png'
4308Binary files resources/images/author_delete.png 1970-01-01 00:00:00 +0000 and resources/images/author_delete.png 2009-07-23 20:20:49 +0000 differ
4309=== added file 'resources/images/author_edit.png'
4310Binary files resources/images/author_edit.png 1970-01-01 00:00:00 +0000 and resources/images/author_edit.png 2009-07-23 20:20:49 +0000 differ
4311=== added file 'resources/images/author_maintenance.png'
4312Binary files resources/images/author_maintenance.png 1970-01-01 00:00:00 +0000 and resources/images/author_maintenance.png 2009-07-22 08:20:42 +0000 differ
4313=== added file 'resources/images/book_add.png'
4314Binary files resources/images/book_add.png 1970-01-01 00:00:00 +0000 and resources/images/book_add.png 2009-07-23 20:20:49 +0000 differ
4315=== added file 'resources/images/book_delete.png'
4316Binary files resources/images/book_delete.png 1970-01-01 00:00:00 +0000 and resources/images/book_delete.png 2009-07-23 20:20:49 +0000 differ
4317=== added file 'resources/images/book_edit.png'
4318Binary files resources/images/book_edit.png 1970-01-01 00:00:00 +0000 and resources/images/book_edit.png 2009-07-23 20:20:49 +0000 differ
4319=== added file 'resources/images/book_maintenance.png'
4320Binary files resources/images/book_maintenance.png 1970-01-01 00:00:00 +0000 and resources/images/book_maintenance.png 2009-07-23 20:20:49 +0000 differ
4321=== modified file 'resources/images/openlp-2.qrc'
4322--- resources/images/openlp-2.qrc 2009-07-18 05:43:50 +0000
4323+++ resources/images/openlp-2.qrc 2009-07-24 22:13:40 +0000
4324@@ -1,5 +1,18 @@
4325 <RCC>
4326 <qresource prefix="songs" >
4327+ <file>topic_edit.png</file>
4328+ <file>author_add.png</file>
4329+ <file>author_delete.png</file>
4330+ <file>book_add.png</file>
4331+ <file>song_maintenance.png</file>
4332+ <file>topic_add.png</file>
4333+ <file>book_delete.png</file>
4334+ <file>book_edit.png</file>
4335+ <file>author_edit.png</file>
4336+ <file>topic_delete.png</file>
4337+ <file>book_maintenance.png</file>
4338+ <file>author_maintenance.png</file>
4339+ <file>topic_maintenance.png</file>
4340 <file>song_delete.png</file>
4341 <file>song_edit.png</file>
4342 <file>song_export.png</file>
4343
4344=== added file 'resources/images/song_maintenance.png'
4345Binary files resources/images/song_maintenance.png 1970-01-01 00:00:00 +0000 and resources/images/song_maintenance.png 2009-07-24 22:13:40 +0000 differ
4346=== added file 'resources/images/topic_add.png'
4347Binary files resources/images/topic_add.png 1970-01-01 00:00:00 +0000 and resources/images/topic_add.png 2009-07-23 20:20:49 +0000 differ
4348=== added file 'resources/images/topic_delete.png'
4349Binary files resources/images/topic_delete.png 1970-01-01 00:00:00 +0000 and resources/images/topic_delete.png 2009-07-23 20:20:49 +0000 differ
4350=== added file 'resources/images/topic_edit.png'
4351Binary files resources/images/topic_edit.png 1970-01-01 00:00:00 +0000 and resources/images/topic_edit.png 2009-07-23 20:20:49 +0000 differ
4352=== added file 'resources/images/topic_maintenance.png'
4353Binary files resources/images/topic_maintenance.png 1970-01-01 00:00:00 +0000 and resources/images/topic_maintenance.png 2009-07-22 08:20:42 +0000 differ