From be129d243b26bf7a736b447168334a37ccfa1f3b Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Sun, 6 Mar 2016 21:48:42 -0800 Subject: [PATCH] Fixed: refactoring of CPTextView --- AppKit/CPTextView/CPFontPanel.j | 5 +- AppKit/CPTextView/CPLayoutManager.j | 11 +- AppKit/CPTextView/CPTextContainer.j | 2 +- AppKit/CPTextView/CPTextStorage.j | 22 ++-- AppKit/CPTextView/CPTextView.j | 112 ++++++++++++------ AppKit/CPTextView/CPTypesetter.j | 26 ++-- .../CPTextViewCibTest/Resources/MainMenu.cib | 2 +- .../CPTextViewCibTest/Resources/MainMenu.xib | 12 +- 8 files changed, 118 insertions(+), 74 deletions(-) diff --git a/AppKit/CPTextView/CPFontPanel.j b/AppKit/CPTextView/CPFontPanel.j index 97ab3a0ad..6fcb802fd 100644 --- a/AppKit/CPTextView/CPFontPanel.j +++ b/AppKit/CPTextView/CPFontPanel.j @@ -105,7 +105,7 @@ var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], glyphRange = [_layoutManager glyphRangeForTextContainer:_textContainer], usedRect = [_layoutManager usedRectForTextContainer:_textContainer], bounds = [self bounds], - pos = CPMakePoint((bounds.size.width - usedRect.size.width) / 2.0, (bounds.size.height - usedRect.size.height) / 2.0); + pos = CGPointMake((bounds.size.width - usedRect.size.width) / 2.0, (bounds.size.height - usedRect.size.height) / 2.0); CGContextSaveGState(ctx); CGContextSetFillColor(ctx, [CPColor whiteColor]); @@ -226,12 +226,15 @@ var _availableTraits= [@"Normal", @"Italic", @"Bold", @"Bold Italic"], upperView = [[CPView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(contentBounds), CGRectGetHeight(contentBounds) - (kBorderSpacing + kToolbarHeight + kInnerSpacing))]; [contentView addSubview:_toolbarView]; + _fontBrowser = [[CPBrowser alloc] initWithFrame:CGRectMake(10, 35, 150, 350)]; _traitBrowser = [[CPBrowser alloc] initWithFrame:CGRectMake(155, 35, 150, 350)]; _sizeBrowser = [[CPBrowser alloc] initWithFrame:CGRectMake(300, 35, 140, 350)]; + [self _setupBrowser:_fontBrowser]; [self _setupBrowser:_traitBrowser]; [self _setupBrowser:_sizeBrowser]; + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewDidChangeSelection:) name:CPTextViewDidChangeSelectionNotification diff --git a/AppKit/CPTextView/CPLayoutManager.j b/AppKit/CPTextView/CPLayoutManager.j index c2deea502..bf5df644a 100644 --- a/AppKit/CPTextView/CPLayoutManager.j +++ b/AppKit/CPTextView/CPLayoutManager.j @@ -31,6 +31,7 @@ @import "CPTextContainer.j" @import "CGContext.j" @import "CPTypesetter.j" +@import "CPFont.j" @global _MakeRangeFromAbs @@ -127,6 +128,7 @@ _oncontextmenuhandler = function () { return false; }; { return [_textStorage length]; } + - (int)numberOfCharacters { return [_textStorage length]; @@ -176,7 +178,7 @@ _oncontextmenuhandler = function () { return false; }; if (fragment._textContainer === container) { var frames = [fragment glyphFrames], - l = frames? frames.length : 0; + l = frames ? frames.length : 0; for (var j = 0; j < l; j++) { @@ -289,9 +291,11 @@ _oncontextmenuhandler = function () { return false; }; // document.title=startIndex; [_typesetter layoutGlyphsInLayoutManager:self startingAtGlyphIndex:startIndex maxNumberOfLineFragments:-1 nextGlyphIndex:nil]; + #if PLATFORM(DOM) [self _cleanUpDOM]; #endif + _isValidatingLayoutAndGlyphs = NO; } @@ -431,6 +435,7 @@ _oncontextmenuhandler = function () { return false; }; - (void)textStorage:(CPTextStorage)textStorage edited:(unsigned)mask range:(CPRange)charRange changeInLength:(int)delta invalidatedRange:(CPRange)invalidatedRange { var actualRange = CPMakeRange(CPNotFound,0); + [self invalidateLayoutForCharacterRange: invalidatedRange isSoft:NO actualCharacterRange:actualRange]; [self invalidateDisplayForGlyphRange: actualRange]; } @@ -734,7 +739,7 @@ _oncontextmenuhandler = function () { return false; }; var lineFragment = _objectWithLocationInRange(_lineFragments, glyphRange.location); if (lineFragment) - [lineFragment setAdvancements: someAdvancements]; + [lineFragment setAdvancements:someAdvancements]; } - (void)setLocation:(CGPoint)aPoint forStartOfGlyphRange:(CPRange)glyphRange @@ -1198,7 +1203,7 @@ var _objectsInRange = function(aList, aRange) for (var i = 0; i < count; i++) _glyphsFrames[i].origin.y += (height - _fragmentRect.size.height); - _fragmentRect.size.height=height; + _fragmentRect.size.height = height; } - (CPString)description diff --git a/AppKit/CPTextView/CPTextContainer.j b/AppKit/CPTextView/CPTextContainer.j index 49f05b3df..5c3f485a9 100644 --- a/AppKit/CPTextView/CPTextContainer.j +++ b/AppKit/CPTextView/CPTextContainer.j @@ -123,7 +123,7 @@ CPLineMovesUp = 4; { var oldSize = _size; - _size = someSize; + _size = CGSizeMakeCopy(someSize); if (oldSize.width != _size.width) { diff --git a/AppKit/CPTextView/CPTextStorage.j b/AppKit/CPTextView/CPTextStorage.j index fd57d741f..229610dc6 100644 --- a/AppKit/CPTextView/CPTextStorage.j +++ b/AppKit/CPTextView/CPTextStorage.j @@ -23,7 +23,9 @@ @import @import + @import "CPText.j" +@import "CPFont.j" @class CPLayoutManager; @@ -119,20 +121,20 @@ var CPTextStorageDelegate_textStorageWillProcessEditing_ = 1 << 1, - (void)addLayoutManager:(CPLayoutManager)aManager { - if (![_layoutManagers containsObject:aManager]) - { - [aManager setTextStorage:self]; - [_layoutManagers addObject:aManager]; - } + if ([_layoutManagers containsObject:aManager]) + return + + [aManager setTextStorage:self]; + [_layoutManagers addObject:aManager]; } - (void)removeLayoutManager:(CPLayoutManager)aManager { - if ([_layoutManagers containsObject:aManager]) - { - [aManager setTextStorage:nil]; - [_layoutManagers removeObject:aManager]; - } + if (![_layoutManagers containsObject:aManager]) + return + + [aManager setTextStorage:nil]; + [_layoutManagers removeObject:aManager]; } - (void)invalidateAttributesInRange:(CPRange)aRange diff --git a/AppKit/CPTextView/CPTextView.j b/AppKit/CPTextView/CPTextView.j index 60d84b233..a23ab9521 100644 --- a/AppKit/CPTextView/CPTextView.j +++ b/AppKit/CPTextView/CPTextView.j @@ -64,7 +64,7 @@ _MidRange = function(a1) function _isWhitespaceCharacter(chr) { - return (chr === '\n' || chr === '\r' || chr === ' ' || chr === '\t'); + return (chr === '\n' || chr === '\r' || chr === ' ' || chr === '\t'); } _characterTripletFromStringAtIndex = function(string, index) @@ -267,24 +267,26 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)copy:(id)sender { - [_CPNativeInputManager setLastCopyWasNative:[sender isKindOfClass:[_CPNativeInputManager class]]]; - _copySelectionGranularity = _previousSelectionGranularity; - [super copy:sender]; + [_CPNativeInputManager setLastCopyWasNative:[sender isKindOfClass:[_CPNativeInputManager class]]]; + _copySelectionGranularity = _previousSelectionGranularity; + + [super copy:sender]; if (![self isRichText]) return; var selectedRange = [self selectedRange], pasteboard = [CPPasteboard generalPasteboard], - stringForPasting = [_textStorage attributedSubstringFromRange:CPMakeRangeCopy(selectedRange)]; + stringForPasting = [_textStorage attributedSubstringFromRange:CPMakeRangeCopy(selectedRange)]; - // put rich representation on the pasteboad only if we have multliple attributes selected - if (stringForPasting._rangeEntries.length > 1) - { - var richData = [_CPRTFProducer produceRTF:stringForPasting documentAttributes:@{}]; - // [pasteboard declareTypes:[CPStringPboardType, CPRichStringPboardType] owner:nil]; // this does currently do not work due to limitations in cappuccino - [pasteboard setString:richData forType:CPStringPboardType]; // crude hack to make rich pasting possible in chrome and firefox: put rtf on the plain pasteboard - } + // put rich representation on the pasteboad only if we have multliple attributes selected + if (stringForPasting._rangeEntries.length > 1) + { + // [pasteboard declareTypes:[CPStringPboardType, CPRichStringPboardType] owner:nil]; // this does currently do not work due to limitations in cappuccino + var richData = [_CPRTFProducer produceRTF:stringForPasting documentAttributes:@{}]; + // crude hack to make rich pasting possible in chrome and firefox: put rtf on the plain pasteboard + [pasteboard setString:richData forType:CPStringPboardType]; + } } - (void)paste:(id)sender @@ -739,18 +741,22 @@ var kDelegateRespondsTo_textShouldBeginEditing // interface to the _CPNativeInputManager - (void)_activateNativeInputElement:(DOMElemet)aNativeField { - var attributes=[[self typingAttributes] copy]; - [attributes setObject:[CPColor colorWithRed:1 green:1 blue:1 alpha:0] forKey:CPForegroundColorAttributeName]; // make it invisible + var attributes = [[self typingAttributes] copy]; + + // make it invisible + [attributes setObject:[CPColor colorWithRed:1 green:1 blue:1 alpha:0] forKey:CPForegroundColorAttributeName]; + + // FIXME: this hack to provide the visual space for the inputmanager should at least bypass the undomanager var placeholderString = [[CPAttributedString alloc] initWithString:aNativeField.innerHTML attributes:attributes]; - [self insertText:placeholderString]; // FIXME: this hack to provide the visual space for the inputmanager should at least bypass the undomanager + [self insertText:placeholderString]; var caretOrigin = [_layoutManager boundingRectForGlyphRange:CPMakeRange(MAX(0, _selectionRange.location - 1), 1) inTextContainer:_textContainer].origin; caretOrigin.y += [_layoutManager _characterOffsetAtLocation:MAX(0, _selectionRange.location - 1)]; caretOrigin.x += 2; // two pixel offset to the LHS character #if PLATFORM(DOM) - aNativeField.style.left = caretOrigin.x+"px"; - aNativeField.style.top = caretOrigin.y+"px"; + aNativeField.style.left = caretOrigin.x + "px"; + aNativeField.style.top = caretOrigin.y + "px"; aNativeField.style.font = [[_typingAttributes objectForKey:CPFontAttributeName] cssString]; aNativeField.style.color = [[_typingAttributes objectForKey:CPForegroundColorAttributeName] cssString]; #endif @@ -982,7 +988,7 @@ var kDelegateRespondsTo_textShouldBeginEditing // FIXME: find a better way for getting the coordinates of the next line point.y += 2 + rectSource.size.height; - var dindex= point.y >= CPRectGetMaxY(rectEnd) ? nglyphs : [_layoutManager glyphIndexForPoint:point inTextContainer:_textContainer fractionOfDistanceThroughGlyph:fraction], + var dindex = point.y >= CGRectGetMaxY(rectEnd) ? nglyphs : [_layoutManager glyphIndexForPoint:point inTextContainer:_textContainer fractionOfDistanceThroughGlyph:fraction], oldStickyLoc = _stickyXLocation; if (fraction[0] > 0.5) @@ -1861,20 +1867,21 @@ var kDelegateRespondsTo_textShouldBeginEditing - (void)updateInsertionPointStateAndRestartTimer:(BOOL)flag { var caretRect, - nglyphs= [_layoutManager numberOfCharacters]; + numberOfGlyphs= [_layoutManager numberOfCharacters]; if (_selectionRange.length) [_caret setVisibility:NO]; - if (_selectionRange.location >= nglyphs) // cursor is "behind" the last chacacter + if (_selectionRange.location >= numberOfGlyphs) // cursor is "behind" the last chacacter { caretRect = [_layoutManager boundingRectForGlyphRange:CPMakeRange(MAX(0,_selectionRange.location - 1), 1) inTextContainer:_textContainer]; - if (!nglyphs) + if (!numberOfGlyphs) { - var f = [_typingAttributes objectForKey:CPFontAttributeName]; - caretRect.size.height = [f size]; - caretRect.origin.y = ([f ascender] - [f descender]) * 0.5; + var font = [_typingAttributes objectForKey:CPFontAttributeName]; + + caretRect.size.height = [font size]; + caretRect.origin.y = ([font ascender] - [font descender]) * 0.5; } caretRect.origin.x += caretRect.size.width; @@ -1886,9 +1893,11 @@ var kDelegateRespondsTo_textShouldBeginEditing } } else + { caretRect = [_layoutManager boundingRectForGlyphRange:CPMakeRange(_selectionRange.location, 1) inTextContainer:_textContainer]; + } - var loc = (_selectionRange.location === nglyphs && nglyphs > 0) ? _selectionRange.location - 1 : _selectionRange.location, + var loc = (_selectionRange.location === numberOfGlyphs && numberOfGlyphs > 0) ? _selectionRange.location - 1 : _selectionRange.location, caretOffset = [_layoutManager _characterOffsetAtLocation:loc], oldYPosition = CGRectGetMaxY(caretRect), caretDescend = [_layoutManager _descentAtLocation:loc]; @@ -1899,11 +1908,14 @@ var kDelegateRespondsTo_textShouldBeginEditing caretRect.size.height = oldYPosition - caretRect.origin.y; } if (caretDescend < 0) + { caretRect.size.height -= caretDescend; + } caretRect.origin.x += _textContainerOrigin.x; caretRect.origin.y += _textContainerOrigin.y; caretRect.size.width = 1; + [_caret setRect:caretRect]; if (flag) @@ -2154,6 +2166,7 @@ var CPTextViewAllowsUndoKey = @"CPTextViewAllowsUndoKey", - (void)setVisibility:(BOOL)visibilityFlag stop:(BOOL)stopFlag { + #if PLATFORM(DOM) _caretDOM.style.visibility = visibilityFlag ? "visible" : "hidden"; #endif @@ -2161,6 +2174,7 @@ var CPTextViewAllowsUndoKey = @"CPTextViewAllowsUndoKey", if (! visibilityFlag && stopFlag) [self stopBlinking]; } + - (void)setVisibility:(BOOL)visibilityFlag { [self setVisibility:visibilityFlag stop:YES]; @@ -2229,6 +2243,7 @@ var _CPCopyPlaceholder = '-'; + (void)cancelCurrentNativeInputSession { + #if PLATFORM(DOM) if (_CPNativeInputField.innerHTML.length > 2) _CPNativeInputField.innerHTML = ''; @@ -2263,7 +2278,7 @@ var _CPCopyPlaceholder = '-'; #if PLATFORM(DOM) _CPNativeInputField = document.createElement("div"); _CPNativeInputField.contentEditable = YES; - _CPNativeInputField.style.width="64px"; + _CPNativeInputField.style.width = "64px"; _CPNativeInputField.style.zIndex = 10000; _CPNativeInputField.style.position = "absolute"; _CPNativeInputField.style.visibility = "visible"; @@ -2275,6 +2290,7 @@ var _CPCopyPlaceholder = '-'; _CPNativeInputField.addEventListener("keyup", function(e) { _CPNativeInputFieldKeyUpCalled = YES; + // filter out the shift-up, cursor keys and friends used to access the deadkeys // fixme: e.which is depreciated(?) -> find a better way to identify the modifier-keyups if (e.which < 27 || e.which == 91 || e.which == 93) // include apple command keys @@ -2292,18 +2308,22 @@ var _CPCopyPlaceholder = '-'; var charCode = _CPNativeInputField.innerHTML.charCodeAt(0); - if (charCode == 229 || charCode == 197) // å and Å need to be filtered out in keyDown: due to chrome inserting 229 on a deadkey + // å and Å need to be filtered out in keyDown: due to chrome inserting 229 on a deadkey + if (charCode == 229 || charCode == 197) { [currentFirstResponder insertText:_CPNativeInputField.innerHTML]; _CPNativeInputField.innerHTML = ''; return; } - if (!_CPNativeInputFieldActive && _CPNativeInputFieldKeyPressedCalled == NO && _CPNativeInputField.innerHTML.length && _CPNativeInputField.innerHTML != _CPCopyPlaceholder && _CPNativeInputField.innerHTML.length < 3 && _CPNativeInputFieldLastValue !== _CPNativeInputField.innerHTML) // chrome-trigger: keypressed is omitted for deadkeys and cursor keys + // chrome-trigger: keypressed is omitted for deadkeys and cursor keys + if (!_CPNativeInputFieldActive && _CPNativeInputFieldKeyPressedCalled == NO && _CPNativeInputField.innerHTML.length && _CPNativeInputField.innerHTML != _CPCopyPlaceholder && _CPNativeInputField.innerHTML.length < 3 && _CPNativeInputFieldLastValue !== _CPNativeInputField.innerHTML) { _CPNativeInputFieldActive = YES; [currentFirstResponder _activateNativeInputElement:_CPNativeInputField]; - } else + + } + else { if (_CPNativeInputFieldActive) [self _endInputSessionWithString:_CPNativeInputField.innerHTML]; @@ -2335,6 +2355,7 @@ var _CPCopyPlaceholder = '-'; else if (!_CPNativeInputFieldActive) [self hideInputElement]; }, 200); + return false; }, true); // capture mode @@ -2343,6 +2364,7 @@ var _CPCopyPlaceholder = '-'; _CPNativeInputFieldKeyUpCalled = YES; _CPNativeInputFieldKeyPressedCalled = YES; return false; + }, true); // capture mode if (CPBrowserIsEngine(CPGeckoBrowserEngine)) @@ -2360,8 +2382,10 @@ var _CPCopyPlaceholder = '-'; setTimeout(function(){ // prevent dom-flickering [currentFirstResponder paste:self]; }, 20); + return false; } + _CPNativeInputField.oncopy = function(e) { var pasteboard = [CPPasteboard generalPasteboard], @@ -2369,30 +2393,35 @@ var _CPCopyPlaceholder = '-'; currentFirstResponder = [[CPApp keyWindow] firstResponder]; [currentFirstResponder copy:self]; - // dataForPasting = [pasteboard dataForType:CPRichStringPboardType], + + // dataForPasting = [pasteboard dataForType:CPRichStringPboardType], stringForPasting = [pasteboard stringForType:CPStringPboardType]; e.clipboardData.setData('text/plain', stringForPasting); - // e.clipboardData.setData('application/rtf', stringForPasting); // does not seem to work - return false; + // e.clipboardData.setData('application/rtf', stringForPasting); // does not seem to work + return false; } + _CPNativeInputField.oncut = function(e) { - var pasteboard = [CPPasteboard generalPasteboard], string, currentFirstResponder = [[CPApp keyWindow] firstResponder]; - setTimeout(function(){ // prevent dom-flickering + // prevent dom-flickering + setTimeout(function(){ [currentFirstResponder cut:self]; }, 20); - [currentFirstResponder copy:self]; // this is necessary because cut will only execute in the future - // dataForPasting = [pasteboard dataForType:CPRichStringPboardType], + // this is necessary because cut will only execute in the future + [currentFirstResponder copy:self]; + + //dataForPasting = [pasteboard dataForType:CPRichStringPboardType], stringForPasting = [pasteboard stringForType:CPStringPboardType]; e.clipboardData.setData('text/plain', stringForPasting); - // e.clipboardData.setData('application/rtf', stringForPasting); // does not seem to work + //e.clipboardData.setData('application/rtf', stringForPasting); // does not seem to work + return false; } } @@ -2425,10 +2454,12 @@ var _CPCopyPlaceholder = '-'; currentFirstResponder._DOMElement.appendChild(_CPNativeInputField); _CPNativeInputField.focus(); #endif + } + (void)focusForClipboardOfTextView:(CPTextView)textview { + #if PLATFORM(DOM) if (!_CPNativeInputFieldActive && _CPNativeInputField.innerHTML.length == 0) _CPNativeInputField.innerHTML = _CPCopyPlaceholder; // make sure we have a selection to allow the native pasteboard work in safari @@ -2453,14 +2484,17 @@ var _CPCopyPlaceholder = '-'; selection.addRange(range); } #endif + } + (void)hideInputElement { + #if PLATFORM(DOM) - _CPNativeInputField.style.top="-10000px"; - _CPNativeInputField.style.left="-10000px"; + _CPNativeInputField.style.top = "-10000px"; + _CPNativeInputField.style.left = "-10000px"; #endif + } @end \ No newline at end of file diff --git a/AppKit/CPTextView/CPTypesetter.j b/AppKit/CPTextView/CPTypesetter.j index f0ada1fe6..abcc7e726 100644 --- a/AppKit/CPTextView/CPTypesetter.j +++ b/AppKit/CPTextView/CPTypesetter.j @@ -26,8 +26,10 @@ */ @import + @import "CPParagraphStyle.j" @import "CPTextStorage.j" +@import "CPFont.j" @global _isNewlineCharacter @@ -46,9 +48,8 @@ CPTypesetterLineBreakAction = 1 << 3; CPTypesetterParagraphBreakAction = 1 << 4; CPTypesetterContainerBreakAction = 1 << 5; -var _sharedSimpleTypesetter; - -var CPSystemTypesetterFactory; +var CPSystemTypesetterFactory, + _sharedSimpleTypesetter; @implementation CPTypesetter : CPObject @@ -196,7 +197,7 @@ var CPSystemTypesetterFactory; break; } - [_layoutManager setLocation:CPMakePoint(myX, _lineBase) forStartOfGlyphRange:lineRange]; + [_layoutManager setLocation:CGPointMake(myX, _lineBase) forStartOfGlyphRange:lineRange]; [_layoutManager _setAdvancements:advancements forGlyphRange:lineRange]; if (!sameLine) //fix the _lineFragments when fontsizes differ @@ -292,10 +293,8 @@ var CPSystemTypesetterFactory; lineRange.length++; measuringRange.length++; - - var currentChar = theString[glyphIndex]; - - var rangeWidth = [theString.substr(measuringRange.location, measuringRange.length) sizeWithFont:_currentFont inWidth:NULL].width + currentAnchor; + var currentChar = theString[glyphIndex], + rangeWidth = [theString.substr(measuringRange.location, measuringRange.length) sizeWithFont:_currentFont inWidth:NULL].width + currentAnchor; switch (currentChar) // faster than sending actionForControlCharacterAtIndex: called for each char. { @@ -323,7 +322,8 @@ var CPSystemTypesetterFactory; } var advancement = CPMakeSize(rangeWidth - prevRangeWidth, ascent); - advancement.descent=descent; + + advancement.descent = descent; advancements.push(advancement); prevRangeWidth = _lineWidth = rangeWidth; @@ -332,10 +332,10 @@ var CPSystemTypesetterFactory; { if (wrapWidth) { - lineRange = wrapRange; - _lineWidth = wrapWidth; - _lineHeight = wrapRange._height; - _lineBase = wrapRange._base; + lineRange = wrapRange; + _lineWidth = wrapWidth; + _lineHeight = wrapRange._height; + _lineBase = wrapRange._base; } isNewline = YES; diff --git a/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.cib b/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.cib index 20abaefa2..7aded24f7 100644 --- a/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.cib +++ b/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.cib @@ -1 +1 @@ -280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;34E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;35E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;33E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;29E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;37E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;21E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;38E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;33E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;34E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;39E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;40E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;2;41E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;42E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;2;43E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;44E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;45E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;23E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;47E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;47E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;52E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;53E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;54E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;55E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;56E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;57E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;58E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;27E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;32E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;31E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;59E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;59E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;59E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;59E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;60E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;51E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;51E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;2;61E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;2;62E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;2;46E;E;D;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;63E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;64E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;65E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;66E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;69E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;29E;E;D;K;10;$classnameS;10;CPTextViewK;8;$classesA;S;10;CPTextViewS;6;CPTextS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;70E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;70E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;66E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;2;71E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;72E;K;23;CPTextViewIsEditableKeyD;K;6;CP$UIDd;2;60E;K;25;CPTextViewIsSelectableKeyD;K;6;CP$UIDd;2;60E;K;23;CPTextViewIsRichTextKeyD;K;6;CP$UIDd;2;60E;K;21;CPTextViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;22;CPTextViewContainerKeyD;K;6;CP$UIDd;2;74E;K;32;CPTextViewInsertionPointColorKeyD;K;6;CP$UIDd;2;75E;K;35;CPTextViewSelectedTextAttributesKeyD;K;6;CP$UIDd;2;77E;K;23;CPTextViewAllowsUndoKeyD;K;6;CP$UIDd;2;60E;K;26;CPTextViewUsesFontPanelKeyD;K;6;CP$UIDd;2;60E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;78E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;79E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;80E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;84E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;46E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;25E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;85E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;86E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;2;51E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;87E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;88E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;89E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;80E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;83E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;90E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;46E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;25E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;91E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;86E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;2;60E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;87E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;92E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;E;E;S;8;delegateS;8;textViewS;9;theWindowS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{335, 128}, {480, 360}}S;21;{{0, 0}, {1440, 878}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;25E;E;E;S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;22;{{20, 20}, {448, 320}}S;20;{{0, 0}, {448, 320}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;61E;E;E;d;2;36S;10;scrollviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;2;10T;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;93E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;94E;E;d;1;2S;20;{{1, 1}, {431, 318}}S;20;{{0, 0}, {431, 318}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;E;E;d;2;18D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;20;{{0, 0}, {446, 318}}S;6;vfokrtD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;15;CPTextContainerK;8;$classesA;S;15;CPTextContainerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;73E;K;22;CPTextContainerSizeKeyD;K;6;CP$UIDd;2;97E;K;31;CPTextContainerLayoutManagerKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;10;CP.objectsD;K;7;NSColorD;K;6;CP$UIDd;2;75E;K;17;NSBackgroundColorD;K;6;CP$UIDd;3;101E;E;E;S;23;{{-100, 405}, {87, 15}}S;18;{{0, 0}, {87, 15}}d;1;8d;11;-2147483648S;8;scrollerS;27;controlSizeRegular+disabledD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;29;_horizontalScrollerDidScroll:d;1;4d;1;1S;23;{{223, 186}, {15, 133}}S;19;{{0, 0}, {15, 133}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;27;_verticalScrollerDidScroll:S;13;AppControllerS;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;87E;E;E;S;5;colorS;15;{446, 10000000}D;K;10;$classnameS;15;CPLayoutManagerK;8;$classesA;S;15;CPLayoutManagerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;29;CPLayoutManagerTextStorageKeyD;K;6;CP$UIDd;3;103E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;87E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;104E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;13;CPTextStorageK;8;$classesA;S;13;CPTextStorageS;25;CPMutableAttributedStringS;18;CPAttributedStringS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;102E;K;24;CPAttributedStringStringD;K;6;CP$UIDd;3;105E;K;24;CPAttributedStringRangesD;K;6;CP$UIDd;3;106E;K;28;CPAttributedStringAttributesD;K;6;CP$UIDd;3;107E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;87E;E;E;S;21;Je suis un CPTextViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;110E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;111E;E;E;f;12;0.6666666667D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;10;CP.objectsD;K;30;CPForegroundColorAttributeNameD;K;6;CP$UIDd;3;113E;K;19;CPFontAttributeNameD;K;6;CP$UIDd;3;115E;K;29;CPParagraphStyleAttributeNameD;K;6;CP$UIDd;3;117E;E;E;S;26;{"location":0,"length":21}D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;118E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;114E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;119E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;120E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;51E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;51E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;51E;E;D;K;10;$classnameS;16;CPParagraphStyleK;8;$classesA;S;16;CPParagraphStyleS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;116E;K;28;CPParagraphStyleAlignmentKeyD;K;6;CP$UIDd;2;86E;K;27;CPParagraphStyleTabStopsKeyD;K;6;CP$UIDd;1;0E;K;38;CPParagraphStyleFirstLineHeadIndentKeyD;K;6;CP$UIDd;2;46E;K;29;CPParagraphStyleHeadIndentKeyD;K;6;CP$UIDd;2;46E;K;29;CPParagraphStyleTailIndentKeyD;K;6;CP$UIDd;2;46E;K;35;CPParagraphStyleParagraphSpacingKeyD;K;6;CP$UIDd;2;46E;K;36;CPParagraphStyleMinimumLineHeightKeyD;K;6;CP$UIDd;2;46E;K;36;CPParagraphStyleMaximumLineHeightKeyD;K;6;CP$UIDd;2;46E;K;30;CPParagraphStyleLineSpacingKeyD;K;6;CP$UIDd;2;46E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;2;87E;E;E;S;18;.AppleSystemUIFontd;2;11f;12;0.3049308391f;12;0.3742420204E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;34E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;35E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;33E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;29E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;37E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;33E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;21E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;38E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;33E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;36E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;34E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;39E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;40E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;2;41E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;42E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;2;43E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;44E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;45E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;23E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;47E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;47E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;52E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;53E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;54E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;55E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;56E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;57E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;58E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;27E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;1;0E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;32E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;31E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;59E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;59E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;59E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;59E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;60E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;51E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;51E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;2;61E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;2;62E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;2;46E;E;D;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;63E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;64E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;65E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;66E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;69E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;29E;E;D;K;10;$classnameS;10;CPTextViewK;8;$classesA;S;10;CPTextViewS;6;CPTextS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;64E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;64E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;66E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;2;70E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;71E;K;23;CPTextViewIsEditableKeyD;K;6;CP$UIDd;2;60E;K;25;CPTextViewIsSelectableKeyD;K;6;CP$UIDd;2;60E;K;23;CPTextViewIsRichTextKeyD;K;6;CP$UIDd;2;60E;K;21;CPTextViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;22;CPTextViewContainerKeyD;K;6;CP$UIDd;2;73E;K;32;CPTextViewInsertionPointColorKeyD;K;6;CP$UIDd;2;74E;K;35;CPTextViewSelectedTextAttributesKeyD;K;6;CP$UIDd;2;76E;K;23;CPTextViewAllowsUndoKeyD;K;6;CP$UIDd;2;60E;K;26;CPTextViewUsesFontPanelKeyD;K;6;CP$UIDd;2;60E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;77E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;78E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;79E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;80E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;83E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;46E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;25E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;2;51E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;86E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;46E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;87E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;88E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;79E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;89E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;46E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;25E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;90E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;85E;K;23;CPControlControlSizeKeyD;K;6;CP$UIDd;1;0E;K;33;CPControlBaseWrittingDirectionKeyD;K;6;CP$UIDd;1;0E;K;23;CPScrollerIsVerticalKeyD;K;6;CP$UIDd;2;60E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;86E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;91E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;E;E;S;8;delegateS;8;textViewS;9;theWindowS;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1879048192S;24;{{335, 128}, {480, 360}}S;21;{{0, 0}, {1440, 878}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;25E;E;E;S;6;normalS;6;{1, 1}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;22;{{20, 20}, {448, 320}}S;20;{{0, 0}, {448, 320}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;61E;E;E;d;2;36S;10;scrollviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;d;2;10T;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;25E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;92E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;92E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;25E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewScaleKeyD;K;6;CP$UIDd;2;50E;K;18;CPViewSizeScaleKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewIsScaledKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewAppearanceKeyD;K;6;CP$UIDd;1;0E;K;22;CPViewTrackingAreasKeyD;K;6;CP$UIDd;2;93E;E;d;1;2S;20;{{1, 1}, {446, 318}}S;20;{{0, 0}, {446, 318}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;E;E;d;2;18D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;94E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;6;vfokrtD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;15;CPTextContainerK;8;$classesA;S;15;CPTextContainerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;22;CPTextContainerSizeKeyD;K;6;CP$UIDd;2;96E;K;31;CPTextContainerLayoutManagerKeyD;K;6;CP$UIDd;2;98E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;75E;K;10;CP.objectsD;K;7;NSColorD;K;6;CP$UIDd;2;74E;K;17;NSBackgroundColorD;K;6;CP$UIDd;3;100E;E;E;S;23;{{-100, 405}, {87, 15}}S;18;{{0, 0}, {87, 15}}d;1;8d;11;-2147483648S;8;scrollerS;27;controlSizeRegular+disabledD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;29;_horizontalScrollerDidScroll:d;1;4d;1;1S;21;{{432, 1}, {15, 318}}S;19;{{0, 0}, {15, 318}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;27;_verticalScrollerDidScroll:S;13;AppControllerS;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;86E;E;E;S;5;colorS;15;{446, 10000000}D;K;10;$classnameS;15;CPLayoutManagerK;8;$classesA;S;15;CPLayoutManagerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;97E;K;29;CPLayoutManagerTextStorageKeyD;K;6;CP$UIDd;3;102E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;86E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;13;CPTextStorageK;8;$classesA;S;13;CPTextStorageS;25;CPMutableAttributedStringS;18;CPAttributedStringS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;24;CPAttributedStringStringD;K;6;CP$UIDd;3;104E;K;24;CPAttributedStringRangesD;K;6;CP$UIDd;3;105E;K;28;CPAttributedStringAttributesD;K;6;CP$UIDd;3;106E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;2;86E;E;E;S;21;Je suis un CPTextViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;109E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;110E;E;E;f;12;0.6666666667D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;108E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;111E;E;D;K;6;$classD;K;6;CP$UIDd;2;75E;K;10;CP.objectsD;K;30;CPForegroundColorAttributeNameD;K;6;CP$UIDd;3;112E;K;19;CPFontAttributeNameD;K;6;CP$UIDd;3;114E;K;29;CPParagraphStyleAttributeNameD;K;6;CP$UIDd;3;116E;E;E;S;26;{"location":0,"length":21}D;K;6;$classD;K;6;CP$UIDd;2;67E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;117E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;118E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;119E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;60E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;51E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;51E;E;D;K;10;$classnameS;16;CPParagraphStyleK;8;$classesA;S;16;CPParagraphStyleS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;115E;K;28;CPParagraphStyleAlignmentKeyD;K;6;CP$UIDd;2;85E;K;27;CPParagraphStyleTabStopsKeyD;K;6;CP$UIDd;1;0E;K;38;CPParagraphStyleFirstLineHeadIndentKeyD;K;6;CP$UIDd;2;46E;K;29;CPParagraphStyleHeadIndentKeyD;K;6;CP$UIDd;2;46E;K;29;CPParagraphStyleTailIndentKeyD;K;6;CP$UIDd;2;46E;K;35;CPParagraphStyleParagraphSpacingKeyD;K;6;CP$UIDd;2;46E;K;36;CPParagraphStyleMinimumLineHeightKeyD;K;6;CP$UIDd;2;46E;K;36;CPParagraphStyleMaximumLineHeightKeyD;K;6;CP$UIDd;2;46E;K;30;CPParagraphStyleLineSpacingKeyD;K;6;CP$UIDd;2;46E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;2;86E;E;E;S;11;Arial Blackd;2;16f;12;0.3049308391f;12;0.3742420204E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.xib b/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.xib index 8a6c4fba9..3b53186d8 100644 --- a/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.xib +++ b/Tests/Manual/CPTextViewCibTest/Resources/MainMenu.xib @@ -1,8 +1,8 @@ - + - + @@ -33,19 +33,19 @@ - + - + - + @@ -59,7 +59,7 @@ - +